4

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

例子:

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

问题是大项目没有改变,但是有数百个cpp,它的编译时间大约是5分钟。5 分钟是第二个库中的一个小变化。

有可能避免这个问题吗?

提前致谢

4

3 回答 3

5

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

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

通常,依赖项是以高度特定于编译器的方式指定的,也许SO 的其他帖子可以帮助您,或者只是谷歌“eclipse c++ 依赖项管理”。

于 2012-09-18T08:17:49.673 回答
3

您通常会为此使用makea makefile

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

例如,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

如果main.c您更改的唯一文件是other.c. 它会简单地编译other.c为 make other.o,然后链接other.omain.o一起创建prog

这通常是它在“命令行”世界中的完成方式。很可能这也是许多 IDE 在幕后完成的方式,只是对您隐藏。

您需要找出为什么依赖项检查没有按预期工作。如果没有有关如何设置项目的更多信息,很难确定。

于 2012-09-18T08:17:46.613 回答
0

在 Linker-Settings->Miscellaneous->Other objects 下添加您的静态库。如果库更新,您的可执行文件将被重新链接。没有编译。

于 2015-01-21T10:55:36.523 回答