3

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

code/
    Common/
    ProjectA/
    ProjectB/

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

我曾预计,如果我ProjectA先构建,则ProjectB不需要从Common源代码重建中间文件。这没有发生。ProjectB正在重建那些目标文件,如果我ProjectA再次构建,它也会重建它们。

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

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

4

1 回答 1

2

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

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

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

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

  1. 更改这些情况,以便您可以使用该解决方案。
  2. 接受您的情况导致的不必要的更长构建时间。
于 2012-07-25T04:38:16.560 回答