(这个问题类似于this one,但不一样)
我在Windows平台上使用QtCreator,通常使用vc工具链。 有时使用MinGW-W64,所以现在我想尝试使用clang。 与上面的帖子不同 - 我不使用Qt库,只使用qtcreator作为IDE,所以我想我不需要重新构建它和QtCreator用于使用clang工具包,这是正确的吗?
有几个问题:
最后 - 如何在qtcreator中配置所有这些?
答案 0 :(得分:1)
以下步骤仅适用于QYS Creator 4.5.1的MSYS2 64位安装(安装说明here),其中您还在MSYS2上安装了MinGW-w64和mingw32-make;并且您正在构建非QT C或C ++应用程序。
这些说明使用QMake,因为QBS不支持MSYS2 clang。好吧,QMake也不支持它,但我确实弄清楚如何添加对QMake的支持,我没有弄清楚QBS。
MSVC-clang有QMake支持,但它输出MSVC makefile,所以你不能用MSYS2 make构建它。所以这不适用于我们。
pacman
安装clang。我使用pacman -Ss mingw-w64-x86_64-clang
,你的味道可能会有所不同。/msys64/mingw64/share/qt5/mkspecs/
cp -a win32-g++ win32-clang-msys
win32-clang-msys/qmake.conf
并将gcc
更改为clang
,将g++
更改为clang++
(每个2个)-fno-keep-inline-dllexport -mthreads
。/mingw64/bin/clang.exe
)。clang++.exe
在同一位置)Clang
的手动工具包,并将这两个编译器设置为其编译器。win32-clang-msys
现在,您可以尝试使用Clang
工具包和QMake构建项目。
我最初尝试使用QBS,由于this bug,构建失败。但是如果我复制粘贴它们并删除伪造的-target
开关,那么构建命令就会成功。因此,对于QBS用户,我猜你必须在此期间切换到QMake,直到他们修复了这个bug。
疑难解答:我有时会收到错误Project ERROR: failed to parse default search paths from compiler output
。这是QMake缺乏对clang支持的问题。如果我构建在.pro
文件的子目录中,则错误往往不会发生,但如果我在兄弟目录中构建,则会发生错误。
作为解决方法:返回win32-clang-msys/qmake.conf
。将第一个clang
更改回g++
。然后“运行Qmake”(来自QT创建者或命令行),然后将其更改回来。第一次运行QMake时,它会写入文件.qmake.stash
,然后不需要再次生成它。这个文件的内容对我来说是假的,但无论如何建筑似乎都有效。
未定义的引用:我发现与-static
的链接产生了一堆对__imp__cxa_
名称的未定义引用。不确定这里的问题是什么,但可能与生成.qmake.stash
的错误有关。我想Qt开发人员需要正式为QMake添加非MSVC Clang支持。
多个定义: CLang链接器为内联DLLexport函数提供了多个定义。我发现没有解决方法; g ++有-fno-keep-inline-dllexport
来避免这个问题,但是CLang 5不支持该标志。