7

我想根据我当前正在构建的项目配置有不同的项目依赖关系。

例如,我不想在 Release 配置中构建和链接 SomeTestLib.vcproj,但我想在 Debug 中构建并链接到它。

一种可行的解决方案是使用条件编译宏:

#ifdef DEBUG  
#pragma comment( lib, "SomeTestLib" )  
#endif

但在这种情况下,调试器和 IntelliSense 不适用于 SomeTestLib。
我可以使用 .sln 或 .vcproj hack 吗?
谢谢。

4

6 回答 6

7

在谷歌搜索了几天后,我终于放弃了寻找这个问题的解决方案,并搞砸了一个 VS 开发人员,他给了我解决这个问题的方法(实际上,我自己尝试了很多不同的东西来找到这个)。

显然,IDE 不够聪明,无法确定您在给定配置下禁用了特定库的构建,并且没有将该项目的输出添加到依赖它的项目的链接器命令行。我相信你已经意识到了这一点。

但是,由于它只是将库项目的输出行粘贴到依赖项目的命令行中,因此将输出行设置为“”将导致 NOTHING 被添加到依赖项目的链接器命令行中!

希望将来这个问题能在 Visual Studio 中得到解决。我保持乐观,因为它是我最喜欢的 IDE,而且我总是对它支持的功能印象深刻。但是,我看到的一些 VS 帮助线程说这个错误是“设计的”,所以他们可能不会修复它。不过,这似乎很容易做到。

总之,总结一下:

  • 在解决方案资源管理器中右键单击您的库项目,然后单击“属性”。
  • 切换到您的库项目不为其构建的“配置/平台”对。
  • 选择“配置属性 -> 图书馆员 -> 常规”。
  • 对于“输出文件”,键入“”(即打开括号、空格、关闭括号)。
  • 单击确定。

请注意,如果您构建或清理禁用的库项目,此解决方法会给您带来错误。如果您只是构建您的解决方案,它将在禁用配置时被跳过,因此您不会收到错误。

希望这可以帮助!

丹尼尔

于 2010-01-19T16:22:24.660 回答
3

可以关闭依赖项目中的 Linker/General/Link library dependencies 属性,并将库放在相关配置中的链接器输入中。

它使项目引用不太有用,但可行。

于 2009-11-03T14:12:09.243 回答
1

在项目属性->常规中将配置类型设置为实用程序而不是应用程序/库。

于 2011-11-21T13:11:21.390 回答
0

右键单击您的解决方案并选择属性。将显示解决方案属性页面..

在右侧页面中选择配置属性 >>> 配置

在这里,您可以通过选中标记为 Build 的复选框来选择 Debug、Release 和 All 构建类型的构建配置。

于 2009-10-05T09:38:25.633 回答
0

在主项目中,转到配置属性 -> 链接器 -> 输入,在标题为“忽略特定库”的部分中添加要忽略的库,例如:.lib。对其他配置再次执行此操作,但忽略不同的 lib/dll。

最后,如果您不希望每个项目都为两种配置构建,请右键单击解决方案 -> 项目依赖项 -> [选择主/顶级项目] -> 取消选中您不想构建/忽略的项目。

这种方法的优点是您仍然可以根据需要手动构建每个项目,但可以切换配置并仅构建/使用您想要的 lib/dll。

于 2012-06-12T04:27:10.513 回答
0

在 Visual Studio 中,每个构建配置都会为您的项目保留自己的属性列表。只需将您的库添加到您想要的任何构建配置中。只是不要添加到“所有配置”

于 2009-10-05T09:37:38.127 回答