我正在尝试几个通常在Windows上使用Microsoft C++编译的项目,而改为使用clang编译它们。

好的方面是,存在clang-cl.exe,该文件旨在替代cl.exe。但是,即使将clang-cl.exe作为cl.exe复制到当前目录中,msbuild在某些情况下仍会调用Microsoft的cl.exe。

有没有办法告诉msbuild'在这里,当执行Task CL时,使用此cl.exe代替通常的cl.exe'? msbuild的命令行选项在该方向上不包含任何明显的内容。

另外,是否有一种方法可以告诉它为cl提供或覆盖命令行参数,而无需更改项目文件?

最佳答案

从命令行或项目文件都很容易做到这一点。您需要配置的属性是$(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,而不是仅仅依赖于公共(public)目标,则只需设置CL任务的相应参数ToolExeToolPath

关于visual-studio - 如何在MSBuild中使用Clang编译器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30761708/

10-11 23:03
查看更多