我在使用 Visual Studio 2012 时遇到问题,我希望有一个解决方案。我的解决方案中有 2 个项目:1 个项目是“.exe”项目,另一个是“.lib”项目。我已经在exe项目中添加了lib项目作为参考,并且我已经确保它被安排在第一个编译。lib 项目有一堆额外的包含目录和一堆额外的依赖和链接库。lib 项目编译良好。但是,exe 应用程序不会继承任何其他包含目录或其他库目录或依赖项。我可以通过将配置复制到 exe 项目来解决这个问题,但这意味着如果我更新了 lib 依赖项,然后我需要在每个使用这个库的项目中更新它(我玩这个库用于多个项目)。这似乎应该有一个解决方案,但我似乎无法找到它。有没有人想办法让项目继承引用项目的配置,或者没有办法解决这个问题?谢谢。
问问题
2814 次
1 回答
7
没错,项目不会继承它们引用的其他项目的属性。为了解决您的问题,您需要一张属性表。属性表是与项目分开的属性集合(就像您在项目属性中设置的一样)。您可以将单个属性表应用于多个项目。
在您的情况下,“其他库依赖项”和“其他包含目录”将被放入属性表中。该属性表将应用于您的.exe
项目和您的.lib
项目。当您进行更改时,您将对属性表进行更改,并且两个项目都会看到更改。
让我们一步一步地设置一个属性表来做你想做的事。
- 将您的解决方案文件与您的
.exe
项目.lib
一起加载。假设您的库的名称是PowerMath.lib
并且您的主要可执行文件是SuperCalc.exe
. - 在 Visual Studio 中找到解决方案资源管理器窗口。这是列出所有项目以及这些项目中的文件的子窗口。(如果您没有,请单击“查看”菜单并选择“解决方案资源管理器”选项来创建一个。)
- 首先,让我们从您现在设置的项目属性中取出设置。转到项目的项目属性
PowerMath.lib
(在解决方案资源管理器中右键单击该项目,然后从上下文菜单中选择属性)。找到您所做的“其他库依赖项”和“其他包含目录”设置,然后将其删除。(只删除您的更改,而不是之前的任何更改。)(另外,将您的内容写下来或复制到某处——它将在第 10 步中返回。)当您完成项目后,对项目PowerMath.lib
重复该过程SuperCalc.exe
. 把它全部撕掉,这样它就不会干扰我们将要采用的新方法。确保您已为项目的所有配置(调试和发布, - 在解决方案资源管理器窗口的底部,您将看到几个选项卡,包括:解决方案资源管理器、类视图和属性管理器。如果窗口很小,这些可能会被缩写。单击属性管理器。
- 在属性管理器中,您将看到两个条目:
PowerMath
和SuperCalc
项目名称。右键单击PowerMath.lib
项目,然后选择菜单选项Add New Property Sheet。 - 选择一个引用您的库的好名称。我会建议
PowerMath-settings.props
。然后单击Add创建属性表,并自动将其附加到PowerMath
.lib 项目。 - 回到 Property Manager 窗格,您会看到 PowerMath 在其下方有两个元素:Debug和Release。这是您的库的两种配置。如果您通过用鼠标单击它们“打开它们”,您会看到
PowerMath-settings
属性表已附加到两个配置中。 PowerMath-settings
属性表列在一堆已经存在的其他属性表的上方,它们的名称类似于Core Windows Libraries
和Unicode Support
。 您项目的任何配置中的所有设置都来自这些属性表的组合!这就是属性在 Visual Studio 中的工作方式——将项目的所有属性表按顺序放在一起,第一个在底部。- 双击
PowerMath-settings
列表中的属性表。这将带您进入熟悉的项目属性界面。此处所做的更改不适用于项目或该项目中的特定配置。相反,您只为属性表编写设置PowerMath-settings.props
。 - 现在您可以编写附加的库依赖项和附加的包含目录。转到您希望设置这些内容的对话框。在相应的字段中,单击字段右侧的小向下箭头并选择
Edit...
。 - 在编辑框中,您将看到一个空白区域,您可以在其中编写新设置。(您还将看到“继承值”,它们是来自其他属性表的设置。)添加您的内容,然后单击“确定”。
- 完成后,您将拥有一个名为的属性表
PowerMath-settings.props
,其中存储库的所有用户所需的设置PowerMath.lib
。 - 现在返回到 Property Manager 窗口。而是右键单击
SuperCalc
项目(这是您的 .exe)。选择菜单选项Add Existing Property Sheet。找到PowerMath-settings.props
并选择它。 - Boom,现在
SuperCalc.exe
获取您刚刚创建的所有设置PowerMath.lib
。 - 要验证这一点,请从属性管理器切换回解决方案资源管理器(通过单击子窗口底部的解决方案资源管理器选项卡)。转到项目的项目属性
SuperCalc.exe
。转到“其他包含目录”。单击该字段左侧的向下箭头并选择Edit...
。您将看到您的属性表设置被列为“继承值”。 - 有时,在您退出 Visual Studio、重新启动并重新加载解决方案之前,不会应用全新属性表的设置。当它询问您是否要保存项目更改和新属性表时,请记住单击“是” !一旦一切都设置好,你不应该再这样做了。
现在,只要您有一个使用 的新项目PowerMath.lib
,只需转到属性管理器并添加现有属性表:PowerMath-settings.props
。
请记住,对属性表中的属性所做的所有更改都必须通过属性管理器对话框进行,而不是使用PowerMath.lib
项目属性!项目属性是一种“覆盖”属性表,仅适用于一个特定项目。它位于物业经理列出的所有物业表之上。
于 2013-03-02T03:28:23.647 回答