我有一系列C ++解决方案。它们都包含一个公共代码目录。 不仅仅是#include
,而且它们也分别构建了常见的源文件。以下是目录结构的示例:
code/
Common/
ProjectA/
ProjectB/
因此ProjectA
和ProjectB
都包含来自Common
的文件。我已将两个项目的中间目录设置为code/_build/Debug/Obj
。
我曾预料到如果我先构建ProjectA
,那么ProjectB
就不需要从Common
源重建中间文件了。这不会发生。 ProjectB
正在重建这些目标文件,如果我再次构建ProjectA
,它也会重建它们。
如果对象文件不是由当前正在编译的项目构建的,就好像会触发条件重建一样。这是真的吗?
我知道我可以用公共代码创建一个库,但这不是一个选项。
答案 0 :(得分:2)
如果对象文件不是由当前正在编译的项目构建的,就好像会触发条件重建一样。这是真的吗?
是。每个项目都有自己独立的构建文件列表。每个项目都会与其他每个对象分开构建这些文件,因为每个项目还都维护着自己独立的构建选项。即使在同一解决方案中,每个项目都与其他项目分开。
您之前遇到过的问题。很久以前其实。它的解决方案是,并且仍然非常简单:创建第三个项目,创建一个公共代码的静态库,由其他两个项目链接。实际上,静态库存在正是这个原因。
如果情况禁止您使用旨在解决此问题的解决方案,那么您有两种选择: