为什么编译器中不存在重新链接按钮?

Why doesn't exist a relink button in compilers?

本文关键字:链接 按钮 新链接 编译器 不存在 为什么      更新时间:2023-10-16

我在Linux中使用c++,使用eclipse。但我也用过Visual Studio。他们没有(或者至少我不知道该怎么做)一个按钮来重新链接项目。

例:

我有一个大项目(1),有数百个cpp。该项目使用一个小库(2)来做foo。如果我更改foo行为,并编译它,生成一个库,我需要清理大程序(1),重新编译,链接外部库(2)并工作。

问题是大项目没有改变,但是有数百个 cpps,它的编译时间大约是 5 分钟。

有可能避免这个问题吗?

提前致谢

怀疑,但这只是一个猜测,您的项目缺少 foo 库与项目中其他可交付成果之间的依赖关系。

这样,当您修改 foo 时,编译器不知道它需要重新编译(与 foo 中的更改一样多)项目的其余部分,这迫使您手动清理和重建。

通常依赖项是以高度特定于编译器的方式指定的,也许 S.O 的这篇文章可以帮助您,或者只是谷歌"eclipse c++ 依赖项管理"。

通常会使用带有makefilemake

使用此方法,您可以生成自己的代码构建规则,包括绕过大量源文件的编译,如果您只需要重新链接。

例如,makefile

prog: main.o other.o makefile
    gcc -o prog main.o other.o
main.o: main.c makefile
    gcc -c -o main.o main.c
other.o: other.c makefile
    gcc -c -o other.o other.c

如果您更改的唯一文件是 other.c main.c,则不会重新编译。它只需编译other.c来制作other.o,然后将other.omain.o链接在一起以创建prog

这通常是在"命令行"世界中完成的方式。很可能这也是许多 IDE 在幕后完成的方式,只是对你隐藏起来。

您需要找出的是依赖项检查未按预期工作的原因。如果没有关于项目如何设置的进一步信息,就很难确定。

链接器-设置->杂项->其他对象下添加静态库。您的可执行文件将被重新链接,以防库较新。无编译。