【问题标题】:How to use Clang as a compiler with Qt Creator on Windows?如何在 Windows 上使用 Clang 作为 Qt Creator 的编译器?
【发布时间】:2026-02-03 12:55:01
【问题描述】:

我已经在我的 Windows 7 上安装了带有 Qt Creator 的 Qt SDK。还安装了 LLVM 和 Clang。 CMake 已经安装。然后将 Clang 作为编译器添加到: 工具 -> 选项... -> 构建和运行 -> 编译器

然后我创建了 Clang 套件。但是,在创建新项目(简单的控制台应用程序)时,我无法选择 Clang 套件。只有自动检测到的 MSVC 套件。

也许问题是 Clang 套件中的“Qt 版本”是空的。但是从哪里获得 qmake 呢?

【问题讨论】:

    标签: c++ qt clang llvm qt-creator


    【解决方案1】:

    您还应该使用 Clang 编译适当的 Qt 库。下载页面中没有 Qt for Windows 的 Clang 版本。所以你必须在你的机器上准备好构建环境并编译 Qt 源代码,然后在你的工具包的“Qt 版本”字段中分配 qmake 二进制路径。或者干脆使用下载页面上已经存在的 Qt 二进制构建的另一个编译器。

    【讨论】:

    • 据我了解,Clang 是当时最好的 C++ 跨平台编译器,所以我想使用它。你的意思是从源代码或某些特定部分编译整个 Qt?可能有该过程的一些文档吗?
    • 你必须至少编译你想要使用的模块,比如核心,小部件,...。在 Windows 上用 Clang 编译 Qt 时可能会遇到很多麻烦,因为只有 VS据说在文档中支持并在 Windows 上测试了 MinGW 编译器:doc.qt.io/qt-5/windows-requirements.html#sdks-and-compilers
    • @Nejat 你可以通过以下步骤更具体一点:1)你必须在你的机器上准备构建环境2)编译Qt源,然后3)在您的工具包的“Qt版本”字段中分配qmake二进制路径
    • Clang 现在被提及已针对 Windows 进行了测试。但是我没有找到任何具体的说明。如果我按照existing 的说明操作,我会得到'mingw32-make' is not recognized as an internal or external command
    • Windows 上的 Clang 生成的二进制文件与 Visual Studio 构建的二进制文件兼容,因此无需从源代码构建 Qt。只需使用 Qt MSVC 二进制文件。
    【解决方案2】:

    现在,Qt 附带一个名为 win32-clang-msvc 的 mkspec。它使用clang-cl,生成与Visual Studio 编译器一起工作的构建输出。

    我安装了最新的 32 位 LLVM/Clang 5.0 工具链,安装后它被 Qt Creator 自动检测为 C++ 编译器“基于 MSVC2015 的 LLVM 32 位”。我的系统上安装了预构建的 Qt 版本“Qt 5.9.2 MSVC2015 32bit”,它使用相同的架构和 MSVC 版本。

    为了使用win32-clang-msvc mkspec,我克隆了套件“Desktop Qt 5.9.2 MSVC2015 32bit”。然后我唯一需要修改的是输入 win32-clang-msvc 作为 Qt mkspec 并选择“LLVM 32bit based on MSVC2015”作为 C++ 编译器。然后我的项目使用 clang-cl.exe 而不是 cl.exe 使用这个工具包构建。

    【讨论】:

    • 这仅适用于 32 位 MSVC2015 安装吗?我正在尝试在 MSVC2017 64 位环境中设置 clang,即使我在 PATH 中使用 MSVC2017 工具运行 shell(即 cl.exe 确实有效),clang 也找不到用于编译基本应用程序的标准库。
    • 当我从 Qt creator 运行所有内容而不更改环境中的任何内容时,我只能确认它确实适用于 MSVC2015 32 位和 64 位。您是否在“构建和运行”->编译器->自动检测中看到/使用 LLVM 工具链?在 shell 中构建时,可能需要一些额外的 clang 路径?可能是仅安装 MSVC2015 构建工具的替代方案,但我认为它不应该是必要的,因为 2015 和 2017 与 ABI 兼容。
    • 我猜对于 MSVC2017,Clang(现在是 LLVM6)中没有自动检测支持,但我确实通过为 MSVC2017 定义所有包含和 lib 标志来通过命令行编译/链接。然后是 Qt:即使在 PATH 中使用 LLVM,QtCreator 和 QBS 都不会自动检测 Clang。由于成功的 MSVC 集成或其他一些幕后逻辑,Qt 可能检测到您自动检测到的 clang。
    • 我通过 Qt creator 来源搜索了一下:它正在寻找来自 llvm/clang 安装程序的注册表项,然后它尝试找到具有匹配 ABI 的 msvc 工具链。因此,无需添加到路径,而是需要使用“HKEY_LOCAL_MACHINE\\SOFTWARE\\LLVM\\LLVM”(或使用 64 位 Qt-creator 时相应的 64 位条目)进行检测。不确定 ABI 检测中的“WindowsMsvc2015Flavor”是否与 MSVC2017 匹配,理论上 ABI 与 MSVC2015 兼容。见[这里][1]。 [1]:code.woboq.org/qt5/qt-creator/src/plugins/projectexplorer/…
    • @mattwilkie 不,我刚刚通过官方安装程序安装了 LLVM,然后将安装程序在该密钥下添加的路径更改为可以找到我自己构建的路径。
    最近更新 更多