如何让项目共享中间(.obj)文件?

问题描述 投票:0回答:1

我有一系列 C++ 解决方案。它们都包含一个通用代码目录。 不仅仅是

#include
,它们还单独构建通用源文件。这是目录结构的示例:

code/
    Common/
    ProjectA/
    ProjectB/

因此

ProjectA
ProjectB
都包含来自
Common
的文件。我已将两个项目的中间目录设置为
code/_build/Debug/Obj

我预计如果我先构建

ProjectA
,那么
ProjectB
就不需要从
Common
源重建中间文件。这并没有发生。
ProjectB
正在重建这些目标文件,如果我再次构建
ProjectA
,它也会重建它们。

就好像如果目标文件不是由当前正在编译的项目构建的,则会触发条件重建。这是真的吗?

我知道我可以用通用代码创建一个库,但这不是一个选项。

c++ visual-studio-2010
1个回答
2
投票

就好像如果目标文件不是由当前正在编译的项目构建的,则会触发条件重建。这是真的吗?

是的。每个项目都维护自己单独的构建文件列表。每个项目都与其他对象分开构建这些文件,因为每个项目维护自己单独的构建选项。每个项目都与其他所有项目分开,即使在同一解决方案中也是如此。

您描述的问题以前也遇到过。其实很久以前了。它的解决方案过去并且仍然非常简单:创建第三个项目,该项目创建一个公共代码的静态库,该库由其他两个项目链接。事实上,静态库的存在正是为了这个原因。

如果情况不允许您使用旨在解决该问题的解决方案,那么您有两种选择:

    改变这些情况,以便您可以使用该解决方案。
  1. 接受因您的情况而导致的不必要的更长构建时间。
© www.soinside.com 2019 - 2024. All rights reserved.