2015-09-11 508 views
13

我在Windows 7上安裝了Qt Creator Qt SDK。LLVM & Clang也已安裝。 CMake已經安裝。之後將Clang作爲編譯器添加到: 工具 - >選項... - > Build &運行 - >編譯器如何在Windows上使用Clang作爲Qt Creator的編譯器?

然後我創建了Clang工具包。然而,在創建新項目(簡單控制檯應用程序)時,我無法選擇Clang套件。只有自動檢測MSVC套件。

也許問題是Clang工具包中的「Qt版本」是空的。但是從哪裏獲得qmake呢?

回答

10

你還應該有一個合適的編譯Qt庫和Clang。在下載頁面中沒有用於Windows的Clang版本。所以你必須在你的機器上準備構建環境並編譯Qt源代碼,然後在你的工具包的「Qt版本」字段中分配qmake二進制路徑。或者簡單地使用Qt二進制版本的另一個編譯器,它已經在下載頁面出現。

+1

據我所知,Clang是當時C++最好的跨平臺編譯器,所以我想使用它。你的意思是從源代碼或某些特定的部分編譯整個Qt?可能是有一些文件的過程? –

+0

你必須至少編譯你想要使用的模塊,比如core,widgets,....在Windows上編譯與Clang的Qt時可能會遇到很多麻煩,因爲只有VS和MinGW編譯器被認爲是支持和測試在Windows中的文檔:http://doc.qt.io/qt-5/windows-requirements.html#sdks-and-compilers – Nejat

+0

@Nejat你可以更具體一點,以下步驟:* 1)你必須在你的機器上準備構建環境*和* 2)編譯Qt源*然後* 3)在你的工具包的「Qt版本」字段中分配qmake二進制路徑。 – cross

4

現在,Qt帶有一個名爲win32-clang-msvc的mkspec。它使用clang-cl,它產生與Visual Studio編譯器一起工作的構建輸出。

我安裝了最新的32位LLVM/Clang 5.0工具鏈,安裝後它被Qt Creator自動檢測爲C++編譯器「基於MSVC2015的LLVM 32bit」。我的系統上安裝了預編譯的Qt版本「Qt 5.9.2 MSVC2015 32bit」,它使用相同的體系結構和MSVC版本。

要使用win32-clang-msvc mkspec,我克隆了Kit「Desktop Qt 5.9.2 MSVC2015 32bit」。然後我必須修改的唯一東西是作爲Qt mkspec輸入win32-clang-msvc,並選擇「基於MSVC2015的LLVM 32位」作爲C++編譯器。然後我的項目使用此工具包與clang-cl.exe而不是cl.exe一起構建。

+0

這隻適用於32位,MSVC2015安裝嗎?我試圖在MSVC2017 64位環境中設置鐺聲,即使我正在PATH中使用MSVC2017工具運行shell(即cl.exe確實有效),但clang沒有找到用於編譯基本應用程序的標準庫。 – pwuertz

+0

當我運行Qt創建者的所有內容而不改變環境中的任何內容時,我只能確認它可以與MSVC2015 32位和64位兼容。你在「構建和運行」 - >編譯器 - >自動檢測中看到/使用LLVM工具鏈嗎?在shell中構建時,可能需要一些額外的clang路徑?可能只是安裝MSVC2015構建工具的替代方案,但我相信它不應該是必要的,因爲2015年和2017年是ABI兼容的。 – FourtyTwo

+0

我想MSVC2017在Clang(現在是LLVM6)中沒有自動檢測支持,但我設法通過定義MSVC2017的所有include和lib標誌來通過命令行編譯/鏈接。 然後是Qt:QtCreator和QBS都無法自動檢測Clang,即使使用PATH中的LLVM也是如此。由於成功的MSVC集成或其他幕後邏輯,你的自動檢測叮噹聲可能被Qt檢測到。 – pwuertz