2015-09-11 512 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