我最近在Visual Studio中encountered Property Sheets提供了一种为项目定义用户定义的$(MACRO)
的方法。他们不是what I really want但是到目前为止我能在VS中找到最接近的人。
但是,在属性管理器(查看 - >其他Windows - > Property Manager)下,除非您编辑特定的内容,否则似乎无法显示配置编辑器的“用户宏”部分配置/平台组合,如Debug | Win32
。
如果您有相当多的配置,并希望(比方说)将宏设置为同一平台上所有配置的相同值,则会很快变得麻烦。
正常编辑项目属性时,您可以选择"所有配置"和/或"所有平台"将更改复制到子节。编辑属性表时,这不可用。
有没有办法一次为多个配置/平台设置属性表中的值?例如,考虑您要为x64目标设置宏POSTGRES_INSTALL
到%PROGRAMFILES%\PostgreSQL\9.3
,为x86目标设置%PROGRAMFILES(x86)%\PostgreSQL\9.3
,是否有任何方法可以为多个目标执行此操作(Debug,Release) ,SomeCustomTarget)同时?
答案 0 :(得分:14)
属性表是简单的属性列表。参赛作品不是按配置或按平台进行的。
如果您将属性表添加到项目的顶层,则会将其添加到下面的所有配置/平台组合中,就像您自己将该属性表文件单独添加到每个配置一样。
因此,所有配置/平台变体都可以看到所有属性。
这意味着您还可以执行以下操作:例如,为所有x86配置创建一个工作表,为所有x64配置创建不同的工作表,例如:用于构建路径。这样,您的代码中的所有其他属性都可以使用$(MYLIB_INCLUDE)
而无需担心它是32位还是64位构建。
您可以有用地组合每个配置/平台和全局属性表,属性表也可以在列表的下方引用。 (顺序很重要,根据用户界面似乎从下到上阅读。)
您可以通过在主项目属性页面中编辑属性来检查属性的最终值,并选项卡打开"宏>"标签。当调试一个用户宏从另一个工作表引用另一个宏的排序问题时,这非常有用。
作为一个例子,你可以download from pg_sysdatetime
on github here,我创建了三个属性表:
pg_sysdatetime.props
是用户可以编辑以更改路径的主工作表。它定义了PGBASEDIR_x86
和PGBASEDIR_x64
宏以及系统上32位和64位PostgreSQL安装的路径。
pg_sysdatetime_x86.props
是一个简单的包装器,将PGBASEDIR
定义为$(PGBASEDIR_x86)
。
pg_sysdatetime_x64.props
对$(PGBASEDIR_x64)
我将pg_sysdatetime.props
添加到项目的顶层,因此它适用于所有配置/平台组合。
然后我将sysdatetime_x86.props
添加到所有x86平台配置,并sysdatetime_x64.props
添加到所有x64平台配置。
属性编辑器如下所示:
我可以在编辑属性时看到正确定义的宏:
现在我可以在项目的任何地方使用简单的宏来引用PostgreSQL libdir,include目录等,如下所示:
$(PGBASEDIR)\lib
没有关心我是否正在进行32位或64位构建等等。所以我可以编辑"所有配置","所有平台&#34的设置;并且知道他们将为所有事情工作,我不必单独编辑每一个。
它几乎就像使用1980年的Makefile ;-)