我有一个包含许多库、一个 BPL 和一个可执行文件的项目。
现在,在 IDE 中,我已经设置了一些依赖项,但是 C++Builder 似乎采用了一种简单的依赖项方法:
它只允许«二进制依赖»,而不是«源文件依赖»。
例如:
A.cpp
& A.h
-> A.exe
,这取决于 B.a
,它有 B.cpp
和 B.h
如果我改变
B.h
,我制作(在IDE中制作)A.exe
,它重建B.a
但不重新编译A.cpp
,所以程序“违反”了C++的ODR。
这是 C++Builder IDE 的限制吗?
一位同事每次都告诉我要构建(在 IDE 中构建),他已经与 Embarcadero 合作了 10 年,并告诉我这是唯一的方法!
我的项目大约需要一个小时来构建,相反我想进行增量构建以加快开发速度。
如果重要的话,我正在使用 C++Builder 10.4!
B.a
是静态库,不是头文件。所以它根本不被编译器使用,只被链接器使用。
“Make”重建对象/可执行文件为
A.exe
只有当它自己的源文件被更改时,即A.cpp
或A.h
,或者如果任何A.exe
的依赖项在同一个项目组被改变了。
A.exe
和B.a
的项目是存储在project group中,还是独立编译?
如果他们在同一个项目组,那么你可以将
B.a
指定为A.exe
的dependency,这样“Make”'ing
A.exe
会先“Make”B.a
,从而重建对象/B.a
的可执行文件(如果需要)。此时,如果 A.exe
的对象/可执行文件发生更改时,IDE 仍然没有重新编译 B.a
的对象/可执行文件,那么您需要 向 Embarcadero 提交错误报告。
否则,由于
A.cpp
不直接依赖于B.a
,当A.exe
改变时,“Make”没有理由重建B.h
的对象/可执行文件,除非A.cpp
(在)直接#include
的B.h
本身。