gpt4 book ai didi

windows - 在 Visual Studio 项目中,是否可以跨多个配置/平台设置用户宏?

转载 作者:可可西里 更新时间:2023-11-01 12:25:31 25 4
gpt4 key购买 nike

我最近 encountered Property Sheets在 Visual Studio 中,它提供了一种为项目定义用户定义的 $(MACRO) 的方法。他们不是 what I really want但这是迄今为止我在 VS 中能找到的最接近的。

但是,在属性管理器下(查看 -> 其他窗口 -> 属性管理器)似乎无法显示配置编辑器的用户宏部分,除非您编辑特定的配置/平台组合,比如 Debug | Win32.

如果您有相当多的配置并且想要(比如说)将同一平台上的所有配置的宏设置为相同的值,这会很快变得很麻烦。

正常编辑项目属性时,您可以选择“所有配置”和/或“所有平台”以将更改复制到子部分。这在编辑属性表时不可用。

有没有办法同时在多个配置/平台的属性表中设置值?例如,对于 x64 目标和 %PROGRAMFILES(x86)%\PostgreSQL,考虑将宏 POSTGRES_INSTALL 设置为 %PROGRAMFILES%\PostgreSQL\9.3\9.3 对于 x86 目标,有没有办法同时对多个目标(调试、发布、SomeCustomTarget)执行此操作?

最佳答案

属性表的工作原理

属性表是简单的属性列表。条目不是按配置或按平台。

如果您将属性表添加到项目的顶层,它会添加到下面的所有配置/平台组合中,就好像您自己将该属性表文件单独添加到每个配置中一样。

因此,所有属性在所有配置/平台变体中都是可见的。

这意味着您还可以做一些事情,比如为所有 x86 配置使用一个工作表,为所有 x64 配置使用不同的工作表,例如用于构建路径。这样,您代码中的所有其他属性都可以只使用 $(MYLIB_INCLUDE) 而不必担心它是 32 位还是 64 位构建。

您也可以有效地组合每个配置/平台和全局属性表,属性表可以引用列表中更下方的一个。 (顺序很重要,它们似乎根据 UI 从下到上阅读)。

您可以通过在主项目属性页面中编辑属性来检查属性的最终值是什么,然后点击打开“宏>”选项卡。这在调试一个用户宏引用来自不同工作表的另一个用户宏的排序问题时很有用。

使用示例,带代码

例如,您可以 download from pg_sysdatetime on github here ,我创建了三个属性表:

  • pg_sysdatetime.props是用户可以编辑以更改路径的主表。它定义了 PGBASEDIR_x86PGBASEDIR_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 平台配置。

属性编辑器如下所示:

VS Properties Manager

而且我可以在编辑属性时看到正确定义的宏:

Properties page showing macros

现在我可以使用简单的宏从项目的任何地方引用 PostgreSQL libdir、include 目录等:

 $(PGBASEDIR)\lib

不关心我是在做 32 位还是 64 位构建,等等。所以我可以只编辑“所有配置”、“所有平台”的设置,并且知道它们适用于一切,我不必单独编辑每一个。

这几乎就像使用 1980 年的 Makefile ;-)

关于windows - 在 Visual Studio 项目中,是否可以跨多个配置/平台设置用户宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com