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

How can I make projects share intermediate (.obj) files?

本文关键字:obj 文件 中间 何使 项目 共享      更新时间:2023-10-16

我有一组C++解决方案。它们都包含一个公共代码目录不仅仅是#include,它们还单独构建公共源文件这里有一个目录结构的例子:

code/
    Common/
    ProjectA/
    ProjectB/

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

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

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

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

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

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

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

如果情况禁止你使用旨在解决这个确切问题的解决方案,那么你有两个选择:

  1. 改变这些情况,以便使用解决方案
  2. 接受由于您的情况而导致的不必要的较长构建时间