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

9

我试图使用clang编译器代替微软C++编译器,来编译一些通常在Windows上使用Microsoft C++编译的项目。

好处是,clang-cl.exe可以作为cl.exe的即插即用替代品。但是,即使我将clang-cl.exe复制到当前目录作为cl.exe,msbuild在某些情况下仍会调用Microsoft的cl.exe。

有没有办法告诉msbuild“在执行CL任务时,请使用这个cl.exe而不是通常的那个”?msbuild的命令行选项中没有任何明显的方向。

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

3个回答

8
这很容易从命令行或项目文件中完成。您需要配置的属性是$(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即可。

3

2

我曾经使用过@seva的解决方案,尽管在Visual Studio版本16.10.1中,它只有在命令行参数中省略“CL”前缀时才对我有效。即:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接