如何在MSBuild中使用Clang编译器?

时间:2015-06-10 16:08:28

标签: visual-studio msbuild clang

我试图通过使用Microsoft C ++在Windows上编译的几个项目,然后用clang编译它们。

在好的方面,存在clang-cl.exe,它被设计为cl.exe的替代品。但是,即使我将clang-cl.exe作为cl.exe复制到当前目录中,msbuild在某些情况下仍然会调用Microsoft的cl.exe。

有没有办法告诉msbuild'这里,在执行任务CL时,使用这个cl.exe而不是通常的一个'? msbuild的命令行选项不包含任何明显的方向。

另外,有没有办法告诉它在不更改项目文件的情况下为cl提供或覆盖命令行参数?

3 个答案:

答案 0 :(得分:6)

从命令行或项目文件中可以轻松完成。您需要配置的属性为$(CLToolExe)$(CLToolPath)

从命令行:

msbuild MyProj.vcxproj /p:CLToolExe=clang-cl.exe /p:CLToolPath=c:\whatever\path\to\the\tool

或者,在.vcxproj文件中:

<PropertyGroup>
  <CLToolExe>clang-cl.exe</CLToolExe>
  <CLToolPath>c:\whatever\path\to\the\tool</CLToolPath>
</PropertyGroup>

如果您直接在.vcxproj文件中调用任务CL,而不是仅仅依赖于公共目标,只需设置CL任务的相应参数ToolExeToolPath

答案 1 :(得分:1)

自Visual Studio 2019 16.2起,Microsoft提供了MSbuild和ClangCl的集成。因此,可以通过以下方式实现:

  • 安装“用于Windows的C ++叮当工具”组件
  • 在IDE中选择“ LLVM(clang-cl)”工具集

Microsoft的博客文章对此有更多信息:https://devblogs.microsoft.com/cppblog/clang-llvm-support-for-msbuild-projects/

答案 2 :(得分:1)

我使用@seva 解决方案有一段时间了,但在 Visual Studio 版本 16.10.1 中,只有在命令行参数中省略了“CL”前缀时,它才对我有用。即:

msbuild MyProj.vcxproj /p:ToolExe=clang-cl.exe /p:ToolPath=c:\whatever\path\to\the\tool