为什么编译器中不存在重新链接按钮?
Why doesn't exist a relink button in compilers?
我在Linux中使用c++,使用eclipse。但我也用过Visual Studio。他们没有(或者至少我不知道该怎么做)一个按钮来重新链接项目。
例:
我有一个大项目(1),有数百个cpp。该项目使用一个小库(2)来做foo。如果我更改foo行为,并编译它,生成一个库,我需要清理大程序(1),重新编译,链接外部库(2)并工作。
问题是大项目没有改变,但是有数百个 cpps,它的编译时间大约是 5 分钟。
有可能避免这个问题吗?
提前致谢
怀疑,但这只是一个猜测,您的项目缺少 foo 库与项目中其他可交付成果之间的依赖关系。
这样,当您修改 foo 时,编译器不知道它需要重新编译(与 foo 中的更改一样多)项目的其余部分,这迫使您手动清理和重建。
通常依赖项是以高度特定于编译器的方式指定的,也许 S.O 的这篇文章可以帮助您,或者只是谷歌"eclipse c++ 依赖项管理"。
通常会使用带有makefile
的make
。
使用此方法,您可以生成自己的代码构建规则,包括绕过大量源文件的编译,如果您只需要重新链接。
例如,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.o
和main.o
链接在一起以创建prog
。
这通常是在"命令行"世界中完成的方式。很可能这也是许多 IDE 在幕后完成的方式,只是对你隐藏起来。
您需要找出的是依赖项检查未按预期工作的原因。如果没有关于项目如何设置的进一步信息,就很难确定。
链接器-设置->杂项->其他对象下添加静态库。您的可执行文件将被重新链接,以防库较新。无编译。
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- 无法链接 CMake 中的本地库
- 内联函数中具有内部链接的全局变量
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用gcc从静态链接的文件中查找可选符号
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 下面是我为检测链接列表中的循环而制作的代码
- 有了gcc,是否可以链接库,但前提是它存在
- 为什么编译器中不存在重新链接按钮?
- 链接按钮和窗口类
- MFC状态栏-使文本与按钮行为的链接
- 删除功能区按钮,但仍然得到链接错误