我在使用Visual Studio 2012时遇到问题,并且希望对此有解决方案。我的解决方案中有2个项目:1个项目是“.exe”项目,另一个是“.lib”项目。我已将lib项目添加为exe项目中的引用,并且确保已计划将其首先编译。 lib项目有很多其他包含目录,还有很多其他依赖项和链接库。 lib项目编译正常。但是,exe应用程序不会继承任何其他包含目录,其他库目录或依赖项。我可以通过将配置复制到exe项目来解决此问题,但这意味着如果我更新了lib依赖项,那么我需要在每个使用该库的项目中对其进行更新(我尝试将此库用于多个项目)。这似乎是应该解决的问题,但我似乎找不到。有没有人想办法让项目继承引用项目的配置,还是没有办法解决?谢谢。
最佳答案
没错,项目不会继承其引用的其他项目的属性。要解决您的问题,您需要一个属性表。属性表是与项目分开的属性集合(就像您在项目属性中设置的一样)。您可以将一个属性表应用于许多项目。
在您的情况下,“附加库依赖项”和“附加包含目录”将放置在属性表中。该属性表将同时应用于您的.exe
项目和.lib
项目。进行更改时,将它们添加到属性表,并且两个项目都将看到更改。
让我们逐步完成设置属性表以完成所需的操作。
.exe
和.lib
项目加载解决方案文件。假设您的库名是PowerMath.lib
,而您的主要可执行文件是SuperCalc.exe
。 PowerMath.lib
项目的项目属性(在解决方案资源管理器中右键单击该项目,然后从上下文菜单中选择“属性”)。找到您进行的“其他库依赖项”和“其他包含目录”设置,然后将其删除。 (仅删除您所做的更改,而不删除以前所做的任何操作。)(此外,将您的内容记下来或将其复制到某个位置-它将在步骤10中返回。)完成PowerMath.lib
项目后,请使用SuperCalc.exe
项目。将所有内容都撕掉,以免干扰我们将要采用的新方法。确保对项目的所有配置(调试和发行版,Win32和x64)都执行了此操作。 PowerMath
和SuperCalc
项目名称。右键单击PowerMath.lib
项目,然后选择菜单选项添加新属性表。 PowerMath-settings.props
。然后单击添加以创建属性表,并将其自动附加到PowerMath
.lib项目。 PowerMath-settings
属性表已附加到这两种配置中。 PowerMath-settings
属性表在其他已经存在的其他属性表的上方列出,这些属性表的名称类似于Core Windows Libraries
和Unicode Support
。项目的任何配置中的所有设置都来自于组合这些属性表!这就是属性在Visual Studio中的工作方式-将项目的所有属性表按顺序排列在一起,第一个在底部。 PowerMath-settings
属性表。这将带您进入熟悉的项目属性界面。此处所做的更改不适用于项目或该项目内的特定配置。相反,您仅在编写属性表PowerMath-settings.props
的设置。 Edit...
。 PowerMath-settings.props
的属性表,其中存储了PowerMath.lib
库的所有用户所需的设置。 SuperCalc
项目(这是您的.exe)。选择菜单选项添加现有属性表。找到PowerMath-settings.props
并选择它。 SuperCalc.exe
可以获取您刚刚为PowerMath.lib
创建的所有设置。 SuperCalc.exe
项目的项目属性。转到“其他包含目录”。单击该字段左侧的向下箭头,然后选择Edit...
。您将看到您的属性表设置被列为“继承值”。 现在,只要您有一个使用
PowerMath.lib
的新项目,只需转到属性管理器并添加现有属性表:PowerMath-settings.props
。请记住,必须通过“属性管理器”对话框而不是使用
PowerMath.lib
项目属性对属性表中的属性进行所有更改!项目属性是一种“替代”属性表,仅适用于一个特定项目。它位于属性管理器列出的所有属性表的上方。
关于visual-studio - Visual Studio 2012中来自外部项目的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152226/