我正在使用带有大量项目和解决方案文件的 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.libandBar.lib中,如果您尝试同时使用Foo.liband ,则会出现“符号已定义”错误Bar.lib。这是正确的错误 - 我实际上不想放入Simple.lib任何其他库中。
我可以添加ProjectReferecefrom Moduleto Simple,但是在每个使用 的项目中设置它很乏味Foo,并且违反了Foo. Module应该不需要知道Simple。显然,链接器需要了解Simple,但它应该能够通过遵循 ProjectReferences 来解决这个问题。
这就是为什么这很重要:假设在维护期间,创建了一个新项目: Basic,它创建了一个静态库,并Simple依赖于Basic. 现在我们必须直接或通过另一个 ProjectReference 更新每个具有 to 的单个项目ProjectReference(Simple在此示例中它只有两个项目Module和Module2,但实际上它是几十个)。这很乏味。
tl; dr有没有办法自动链接到我的依赖项的静态库中?