代码之家  ›  专栏  ›  技术社区  ›  Anthony Atmaram

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

  •  3
  • Anthony Atmaram  · 技术社区  · 12 年前

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

    code/
        Common/
        ProjectA/
        ProjectB/
    

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

    我本以为如果我建造 项目A 首先,然后 项目B 不需要从 常见的 来源这并没有发生。 项目B 正在重建那些对象文件,如果我 项目A 同样,它也将重建它们。

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

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

    1 回复  |  直到 12 年前
        1
  •  2
  •   Nicol Bolas    12 年前

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

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

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

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

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