Visual Studio 2012中外部项目的配置

时间:2013-03-01 06:55:06

标签: visual-studio visual-c++ visual-studio-2012 ide propertysheet

我遇到了Visual Studio 2012的问题,我希望有一个解决方案。我在我的解决方案中有2个项目:1个项目是“.exe”项目,另一个是“.lib”项目。我已经在lib项目中添加了lib项目作为参考,并且我确保它被安排首先编译。 lib项目有一堆额外的include目录和一堆额外的依赖项和链接库。 lib项目编译得很好。但是,exe应用程序不会继承任何其他包含目录或其他库目录或依赖项。我能够通过将配置复制到exe项目来解决这个问题,但这意味着如果我更新了lib依赖项,那么我需要在每个使用该库的项目中更新它(我玩这个库用于多个项目)。这似乎应该有一个解决方案,但我似乎无法找到它。有没有人想出让项目继承引用项目的配置的方法,或者没有办法解决这个问题?感谢。

1 个答案:

答案 0 :(得分:7)

你是对的,项目不会继承他们引用的其他项目的属性。要解决您的问题,您需要的是属性表。属性表是与项目分开的属性集(就像您在“项目属性”中设置的那样)。您可以将单个属性表应用于许多项目。

在您的情况下,"其他库依赖关系"和"其他包括目录"将被放入属性表。该属性表将应用于您的.exe项目和.lib项目。当您进行更改时,您将把它们添加到属性表中,两个项目都将看到更改。

让我们一步一步地设置一个属性表来做你想做的事。

  1. 使用.exe.lib项目加载解决方案文件。我们假设您的图书馆名称为PowerMath.lib,主要可执行文件为SuperCalc.exe
  2. 在Visual Studio中找到解决方案资源管理器窗口。这是列出所有项目的子窗口,以及这些项目中的文件。 (如果您没有,请单击“查看”菜单,然后选择“解决方案资源管理器”选项以创建一个。)
  3. 首先,让我们立即设置项目属性的设置 out 。转到PowerMath.lib项目的项目属性(在解决方案资源管理器中右键单击该项目,然后从上下文菜单中选择“属性”)。找到您的"其他库依赖项"和"其他包括目录"您创建的设置,并将其删除。 (只删除你的更改,而不是以前的更改。)(另外,写下你的东西或将其复制到某个地方 - 它将在步骤10中返回。)当你完成{{1}时} project,使用PowerMath.lib项目重复该过程。全力以赴,这样就不会干扰我们将要采取的新方法。确保您已为项目的所有配置(Debug和Release,Win32和x64)执行此操作。
  4. 在Solution Explorer窗口的底部,您将看到几个选项卡,包括:Solution Explorer,Class View和Property Manager。如果窗口很小,这些可以缩写。点击 Property Manager
  5. 在Property Manager中,您会看到两个条目:SuperCalc.exePowerMath项目名称。右键单击SuperCalc项目,然后选择菜单选项添加新属性表
  6. 选择一个引用您图书馆的好名称。我建议PowerMath.lib。然后点击添加以创建属性表,并自动将其附加到PowerMath-settings.props .lib项目。
  7. 返回Property Manager窗格,您会看到PowerMath下面有两个元素:调试发布。这些是您的库的两种配置。如果你打开它们"用鼠标点击它们,您会看到PowerMath属性表已附加到这两个配置。
  8. PowerMath-settings属性表列在一堆已存在的其他属性表上方,其中包含PowerMath-settingsCore Windows Libraries等名称。 项目任何配置中的所有设置都来自于组合这些属性表!这就是Visual Studio中的属性如何工作 - 将所有项目的属性表放在一起,按顺序排列在底部。
  9. 双击列表中的Unicode Support属性表。这将带您进入熟悉的Project Properties界面。此处所做的更改不适用于项目或该项目内的特定配置。相反,您只需为属性表PowerMath-settings编写设置。
  10. 现在您可以编写其他库依赖项其他包含目录。转到您希望设置这些内容的对话框。在相应字段中,点击字段右侧的小向下箭头,然后选择PowerMath-settings.props
  11. 在编辑框中,您将看到一个空白区域,您可以在其中编写新设置。 (您还将看到"继承的值",这些是来自其他属性表的设置。)添加您的内容,然后单击“确定”。
  12. 当您完成后,您将拥有一个名为Edit...的属性表,其中存储了PowerMath-settings.props库的所有用户所需的设置。
  13. 现在返回Property Manager窗口。右键单击PowerMath.lib项目(这是您的.exe)。选择菜单选项添加现有属性表。找到SuperCalc并选择它。
  14. Boom,现在PowerMath-settings.props获取您刚为SuperCalc.exe创建的所有设置。
  15. 要验证这一点,请从Property Manager切换回Solution Explorer(通过单击子窗口底部的Solution Explorer选项卡)。转到PowerMath.lib项目的项目属性。转到"其他包含目录"。点击该字段左侧的向下箭头,然后选择SuperCalc.exe。您将看到属性表设置列为"继承值"。
  16. 有时,在退出Visual Studio,重新启动和重新加载解决方案之前,不会应用全新属性表的设置。当它询问您是否要保存项目更改和新属性表时,请务必单击!一旦完成所有设置,您就不应该再次这样做了。
  17. 现在,只要您有一个使用Edit...的新项目,只需转到属性管理器并添加现有属性表:PowerMath.lib

    请记住,必须使用PowerMath-settings.props项目属性通过“属性管理器”对话框而不是对属性表中的属性进行所有更改!项目属性是一种"覆盖"属性表仅适用于一个特定项目。它位于物业经理列出的所有物业单之上。