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