我一直使用内置 GUI 支持的 Visual Studios 来配置我的项目,通常使用属性表,以便多个项目使用一个公共集。
我对此的主要抱怨之一是管理多个项目、配置和平台。如果你只是用主 GUI 做所有事情(右键单击项目 -> 属性),它很快就会变得一团糟,难以维护并且容易出现错误(例如未能正确定义某些宏,或使用错误的运行时库等)。处理不同的人将依赖库放在不同的地方(例如我的都住在“C:\Libs\[C,C++]\[lib-name]\”)的事实,然后经常管理这些库的不同版本同样不同(发布、调试、x86、x64 等)也是一个大问题,因为它使在新系统上设置它的时间大大复杂化,然后存在版本控制问题和保持每个人的路径分开.. .
属性表使这更好一点,但我不能让一张表具有针对不同配置和平台的单独设置(下拉框变灰),导致我有很多表,如果以正确的顺序继承,可以做我想要的( “x86”、“x64”、“debug”、“release”、“common”、“directories”(通过定义像 BoostX86LibDir 这样的用户宏来处理前面提到的依赖问题)等)以及如果继承顺序错误(例如”x64” 和 “debug” 之前的 “common”) 会导致尝试链接不正确的库版本或错误地命名输出等问题…
我想要的是一种处理所有这些分散的依赖关系并设置一组“规则”的方法,这些规则被我在解决方案中的所有项目使用,比如将输出库命名为“mylib-[vc90,vc100]-[x86 ,x64][-d].lib”,而不必为每个单独的项目、配置和平台组合执行所有这些操作,然后使它们全部正确同步。
我知道迁移到创建所需文件的完全不同的系统(如 CMake),但是这会使其他地方的事情变得复杂,因此即使是简单的任务(例如向项目中添加新文件)也需要在其他地方进行额外的更改,这不是我想要的对任何一个都非常满意,除非有一些与 VS2010 集成的东西可以跟踪这些变化。
原文由 Fire Lancer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我刚刚发现了一些我认为不可能的东西(它没有被 GUI 公开),这有助于使属性表更加有用。项目属性文件中许多标签的“条件”属性,它也可以在 .props 文件中使用!
我只是将以下内容放在一起作为测试,效果很好,并且完成了 5 个(通用、x64、x86、调试、发布)单独的属性表的任务!
唯一的问题是属性 GUI 无法处理它,使用上述属性表的项目只报告目标的默认继承值,如“$(ProjectName)”。