为了与MSBuild更加亲密,我想从头开始构建vcxproj并通过命令行使用msbuild。我正在关注Docs,如何从头开始构建项目。
用目录结构制作一个简单的程序后:
%Root%\include\main.h
%Root%\src\main.cpp
%Root%\sample.vcxproj
我按照上面的链接构建了vcxproj文件。我做了必要的更改以反映我的目录结构。
在我的系统上,我安装了Visual Studio 2017,并具有所有必需的MSBuild工具。我遇到的问题是$(VCTargetsPath)
默认解决为C:\
。
搜索后,似乎需要设置注册表KvP以确保其正确解析-see here。这对我来说似乎很奇怪,因为当我检查由我在Visual Studio中创建的项目制作的vcxproj文件时,它们使用相同的$(VCTargetsPath)
引用,并且一切正常。另外,在说明需要更改注册表项的链接中,我找不到系统上以*\Microsoft.cpp\v4.0\*
结尾的目录。
关于如何使$(VCTargetsPath)
正确解决的任何想法?
编辑:这是我解决此问题的方法:
在我的sample.vcxproj文件中,创建了一个属性组,该属性组将$(VCTargetsPath)
定义为已知位置-C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
,就像这样。
<PropertyGroup>
<VCTargetsPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\</VCTargetsPath>
</PropertyGroup>
然后从powershell中,我跑了
cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" sample.vcxproj /p:configuration=debug