首页 > 解决方案 > 制作缺少参考链接的 Visual Studio C++ 项目 OK

问题描述

上下文:Visual Studio 2019。

我有一套 C++ 项目需要编译成单独的(插件)DLL,以及静态链接到单个应用程序以进行测试。为此,我创建了两组配置;“插件”和“测试”。在“插件”配置下,它们编译并链接到 DLL,而在“测试”配置下,它们最终成为静态库。到目前为止,一切都很好。

我还将测试应用程序项目添加到此解决方案中,该解决方案具有对所有这些插件项目的项目引用。在“插件”配置下,这个测试应用项目只是设置为不被构建。

但我也有一个小得多的解决方案,它只添加了几个插件项目。我的目标是在处理这些插件的核心框架时有一个更快的构建周期,同时仍然能够快速测试生成的二进制文件。那里的一个小改动意味着所有插件项目都需要重建,这需要很多时间。对于插件配置,这是可行的(每个项目都会生成它自己的二进制文件),但是在构建测试应用程序项目时,Visual Studio 会出现有关项目引用解决方案中缺少的项目的错误。问题是测试应用程序项目在包含在完整解决方案中时需要整个项目引用列表,但在包含在小型解决方案中时只需要项目引用的子集。

我可以使用一些可行的设置吗?为此,我可以复制测试应用程序项目本身,并为副本提供更少的项目引用,但我不想避免重复维护。而且我想自由地在较小的解决方案中更新插件项目的组合,而不必更新项目引用。

添加

举例说明:假设我们有插件项目 P1 到 P9(这里 9 是轻描淡写的)。我们还有测试应用项目 T。我们有两个包含这些项目的解决方案;一个“完整”解决方案 Sf 包含所有插件以及测试应用程序,一个“精简”解决方案 Sl 仅包含一些插件但也包含测试应用程序。

SF:
- P1
- ...
- P9
-T

SL:
- P2
- P6
-T

由于项目 T 需要链接 P 项目创建的静态库,因此它具有对它们的项目引用。因此,在 Sf 中管理项目 T 时,我将每个 P 项目作为依赖项进行检查。然而,由于在解决方案 S1 中出现了相同的项目 T,并且由于这些项目依赖项存储在项目 T 中而不是存储在解决方案 Sf 中,因此项目 T 发现自己处于一个解决方案中,其中并非所有它想要链接的项目都存在。因此,在构建该解决方案时,VS 会在那些缺失的项目上给出链接错误。

我感兴趣的是还有其他解决方案。我可以复制 T 项目并为每个副本提供一个单独的依赖项列表,但是我必须保持两个 T 同步。我也可以删除依赖项并将它们添加到 T 的链接器输入设置中,但这只会将问题转移到另一个位置,而且当新插件到达时更难设置。

标签: c++visual-studiosolution

解决方案


推荐阅读