我正在构建第三方基于CMake的C ++项目。
在发布模式下构建项目只需几秒钟。链接阶段不到一秒钟(当make
打印Linking CXX executable myproject.exe
时)。
在调试模式下构建需要一分多钟。大部分时间都花在链接可执行文件上。即使在对代码进行最小更改后的后续构建期间也会发生这种情况。
与发布模式的区别似乎是-g
选项与-O3 -DNDEBUG
选项的区别。这种行为有望吗?我之前曾经做过类似规模的项目(~18k LOC),但我从未在调试和发布模式之间的编译时间上遇到过如此大的差异。
这需要50秒:
C:\msys64\mingw64\bin\g++.exe -std=c++0x -Wall -Wextra -Wpointer-arith \
-Wcast-align -fstrict-aliasing -Wno-unused-local-typedefs -fvisibility- \
inlines-hidden -march=native -g -Wl,--whole-archive \
CMakeFiles\myproject.dir/objects.a -Wl,--no-whole-archive \
-o myproject.exe -Wl,--major-image-version,0,--minor-image-version,0 \
@CMakeFiles\myproject.dir\linklibs.rsp
答案 0 :(得分:4)
不幸的是,大型项目的链接时间可能非常慢,尤其是在调试模式下。通常有帮助的事情