如何使用 C++Builder 在 cpp 文件和标头之间正确设置依赖关系

问题描述 投票:0回答:1

我有一个包含许多库、一个 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!

c++ c++builder
1个回答
0
投票

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
本身。

© www.soinside.com 2019 - 2024. All rights reserved.