c++ - 解析 VS2010 MSBuild vcxproj 文件

标签 c++ visual-studio-2010 parsing gcc msbuild

我目前正在开发一个控制台应用程序,它将传递一个 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/

相关文章:

c++ - 在函数中操作尚未维数的数组

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

visual-studio-2010 - MVC3 Publishing,为什么不发布模型/ Controller

ios - 如何在 GitHub for iOS (SWIFT) 项目中隐藏 API key ?

json - 通过简单的JS函数将SQLite转换为JSON-解析JSON

java - 解析.java文件并分析其AST

c++ - 将 mt19937 与 random_device 作为静态类成员一起使用时出错

c++ - **字符串': ambiguous symbol**

regex - 替换 VB.Net 代码中的属性定义

c++ - 删除字母代码出错(C++)