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

时间:2012-07-25 03:35:35

标签: c++ visual-studio-2010 compiler-construction

我有一系列C ++解决方案。它们都包含一个公共代码目录。 不仅仅是#include,而且它们也分别构建了常见的源文件。以下是目录结构的示例:

code/
    Common/
    ProjectA/
    ProjectB/

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

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

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

如果情况禁止您使用旨在解决此问题的解决方案,那么您有两种选择:

  1. 更改这些情况,以便您可以使用该解决方案。
  2. 接受您的情况造成的不必要的更长的构建时间。