有了 CMake 3.15,在 Windows 上用 GNU 风格的命令行使用 Clang 编译器成为可能。这也意味着可以用Mingw-w64工具链来使用Clang。
有了 CMake 3.15,在 Windows 上用 GNU 风格的命令行使用 Clang 编译器成为可能。这也意味着可以用Mingw-w64工具链来使用Clang。
虽然可以用Mingw-w64(或MinGW)工具链来配置Clang,但如果你决定使用LLVM repo的Clang,它将无法正常工作。这是因为LLVM Clang for Windows是使用Microsoft Visual Studio构建的,所有内置的宏和包含的搜索路径都是为使用Visual Studio而设置的。所以即使与MinGW工具链一起使用,它仍然会尝试包含MSVC标准库头。
我们做了一些实验,发现了一个可能的工作流程,就是使用CLion与MinGW工具链和Clang编译器相结合。
这是我们的发现:
- 从https://www.msys2.org安装MSYS2,请遵循其安装指南。
- 使用pacman工具获取必要的软件包。我们安装了以下文件(pacman -S):
- mingw-w64-x86_64-gcc
- mingw-w64-x86_64-clang
- mingw-w64-x86_64-lld
- mingw-w64-x86_64-dgb
- mingw-w64-x86_64-make
- mingw-w64-x86_64-polly
- mingw-w64-x86_64-compiler-rt
此Clang编译器使用mingw-w64构建,并具有与该工具链相对应的路径和宏。
现在我们准备建立CLion工具链。转到Settings/Preferences | Build, Execution, Deployment | Toolchains:

配置了新的工具链后,就可以开始构建项目了。您可以使用默认的ld连接或设置lld有-DCMAKE_LINKER=lld。
使用Clang编译器提供的高级工具
从理论上讲,所有Clang工具都应该可以正常工作。但是,涉及编译器-rt可能会出现问题。编译器-rt是一组运行时库,在Clang中使用消毒剂和配置文件是必需的,当前的compile_rt软件包是使用MinGW构建的。但是Clang需要使用Clang和lld构建的编译器。
在我们的案例中,我们想使用配置文件引导的优化。进行此工作的一种方法是获取与MSYS2中的Clang版本完全相同的版本的editor-rt源代码。这可能具有挑战性,因此另一个解决方案是克隆LLVM monorepo并构建所需的工具。
对于-fprofile-instr-generate,仅构建compile -rt和llvm-profdata来合并探查器结果可能就足够了。但是,要可靠地使用所有工具,最好也构建Clang和lld。
幸运的是,我们已经具有该构建所需的设置。

最后一步是将<msys2_path>/mingw64/libclang/<clang_version>/libwindows中的二进制文件替换为<compiler-rt_path>/cmake-build-release-mingw_clang/libwindows或<llvm_build_path>/lib/clang/<clang_version>/lib/windows中的库。
使用Clang进行性能分析
有了正确的编译器-rt库,现在就可以使用与-fprofile-instr-generate / -fprofile-instr-use标志设置的相同的工具链。因为我们已经有了源代码,所以让我们为此实验构建LLVM。我们还将使用-DLLVM_ENABLE_LTO = Thin进行更多优化。转到Settings/Preferences | Build, Execution, Deployment | CMake:

使用此CMake配置,您可以构建Clang编译器并使用它,例如,构建自己的项目。这将生成相关的探查器信息,稍后应将其与我们之前构建的工具llvm-profdata合并。使用合并的profile_merged.profdata文件,您最终可以构建Clang编译器的优化版本:

使用自定义Clang和lld
要让gcc风格的-fprofile-generate/-fprofile-use标志正确工作,需要改变Clang路径,并将-DCMAKE_LINKER设置为新构建的ld。你还需要一些额外的LLVM技巧:-femulated-tls和链接pthread。


然后,应重复使用-fprofile-instr-generate / -fprofile-instr-use执行的所有步骤。
结论
现在可以在Windows上使用Clang,并且不需要安装Microsoft Visual Studio!
我们希望在不久的将来,使用高级的clang工具将变得更加容易,并且不再需要手动构建。让我们知道,如果您发现其他方法可以达到相同的效果!
今天的内容你学会了吗往 免费下 载最新版尝试一下,并在评论分享你的想法。“17周年庆”低价狂潮,省到尖叫最高立减2999元!低至797元!想要购买Clion正版授权的朋友欢迎咨询官方客服。
JetBrain技术交流群现已开通,QQ搜索群 “786598704”或者扫描下方二维码即可加入

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!