我正在使用带有大量项目和解决方案文件的 Visual Studio 2010。但现在我发现自己对 ProjectReferences 有点依赖地狱:
- 项目
Simple
生成一个静态库。 - 项目
Foo
和Bar
依赖Simple
,也产生静态库。 - 项目
Module
依赖Foo
并产生一个 DLL。 - 项目
Module2
依赖Bar
并产生一个 DLL。
所以依赖树看起来像这样:
Simple
|
____________/ \__________
| |
Foo Bar
| |
Module Module2
有了ProjectReferences
,我可以使Module
依赖Foo
和自动链接Foo.lib
。这工作正常。
但是,有没有办法Module
自动链接Simple.lib
?
似乎这应该是可能的。 Module
取决于Foo
,这取决于Simple
,所以它似乎应该能够选择“链接到我的参考文献的输出和我的参考文献的参考文献”。但我找不到任何可以让我这样做的东西。
“链接库依赖项”选项不这样做。它仅在 Foo.lib 中链接,然后我收到有关未解析的外部符号(在 Simple.lib 中定义的符号)的链接错误。
true
为Foo
->Simple
和Bar
->引用设置“链接库依赖项”一开始Simple
似乎有效,直到您有一个同时使用Foo
和的项目Bar
。该设置实际上嵌入Simple.lib
到Foo.lib
andBar.lib
中,如果您尝试同时使用Foo.lib
and ,则会出现“符号已定义”错误Bar.lib
。这是正确的错误 - 我实际上不想放入Simple.lib
任何其他库中。
我可以添加ProjectReferece
from Module
to Simple
,但是在每个使用 的项目中设置它很乏味Foo
,并且违反了Foo
. Module
应该不需要知道Simple
。显然,链接器需要了解Simple
,但它应该能够通过遵循 ProjectReferences 来解决这个问题。
这就是为什么这很重要:假设在维护期间,创建了一个新项目: Basic
,它创建了一个静态库,并Simple
依赖于Basic
. 现在我们必须直接或通过另一个 ProjectReference 更新每个具有 to 的单个项目ProjectReference
(Simple
在此示例中它只有两个项目Module
和Module2
,但实际上它是几十个)。这很乏味。
tl; dr有没有办法自动链接到我的依赖项的静态库中?