MSBuild忽略项目文件中的CLToolExe属性

时间:2015-07-04 20:33:00

标签: visual-c++ msbuild

我正在尝试使用Windows上的clang编译Python 2.7。我认为这样做的解决方案是指定属性CLToolPath和CLToolExe。但是,当我在项目文件中设置这些属性时,msbuild似乎只是忽略它们并继续使用Microsoft编译器。

奇怪的是,当我在命令行中指定这些属性时,msbuild实际上会接收它们。 (但是由于Python 2.7的设置方式的其他方面,构建实际上并没有成功,因此它无法解决问题。它只是证明这些是正确的属性。)

这是项目文件的相关部分

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
  <TargetEnvironment>X64</TargetEnvironment>
</Midl>
<Link>
  <SubSystem>Console</SubSystem>
</Link>
<ClCompile>
  <CLToolPath>C:\llvm\build\Release\bin</CLToolPath>
  <CLToolExe>clang-cl.exe</CLToolExe>
</ClCompile>
</ItemDefinitionGroup>

这是我正在使用的命令行

msbuild /t:clean,build /p:Configuration=Release /p:TrackFileAccess=false /p:Platform="x64" /fileLogger pcbuild.sln

知道什么可能导致属性被忽略?

1 个答案:

答案 0 :(得分:3)

你把它放到了错误的地方。找到相关的PropertyGroup代码,并按如下方式添加<CLToolExe><CLToolExe>

<PropertyGroup>
  <CLToolExe>clang-cl.exe</CLToolExe>
  <CLToolPath>C:\llvm\build\Release\bin</CLToolPath>
</PropertyGroup>