我目前正在开发一个控制台应用程序,它将传递一个 vcxproj 文件并使用 GCC 对其进行编译。不幸的是,我很快就遇到了一大堆问题。
我注意到一堆目录快捷方式,例如:
VCTargetsPath
VC安装目录
解决方案目录
项目目录
用户根目录
等等。
MSBuild 从哪里获取这些值?我假设它们是为 MSBuild 进程设置的环境变量(毕竟已知的环境变量以相同的方式寻址,即“$(...)”)。这是一个错误的假设,所以我想知道我是如何得到这些的。有人对此有任何想法吗?
任何信息将不胜感激:)
最佳答案
MSBuild 可执行文件(和相关 DLL)处理这些属性的方式与处理构建文件中任何其他属性的方式相同。在这种情况下,它们只是它明确查找的预定义属性。
如果你真的想深入研究它,请在 Reflector 中打开 Microsoft.Build.dll
并查找 Microsoft.Build.Construction.SolutionProjectGenerator.AddGlobalProperties(...)
方法以了解它如何处理一些众所周知的属性。
作为附加说明,请确保您完全向下导航 Import 指令并处理每次 Import 的属性和项值的覆盖。有许多属性和项目是 Visual Studio 构建的一部分,它们并不总是正确编译代码所必需的。
关于c++ - 解析 VS2010 MSBuild vcxproj 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099218/