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

MSBuild ignoring CLToolExe property in project file

我正在尝试在 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

知道是什么导致属性被忽略吗?

你放错地方了。找到相关的 PropertyGroup 标签并添加 <CLToolExe><CLToolExe> 如下:

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