c++ - create - cmake script tutorial
Tiempo de vinculaciĆ³n muy largo con las opciones-g y sin-DNDEBUG (1)
Lamentablemente, los tiempos de enlace para proyectos grandes pueden ser bastante lentos, especialmente en el modo de depuración. Las cosas que generalmente ayudan son
- dividir el proyecto en bibliotecas compartidas (eso lo hacen, por ejemplo, los desarrolladores de LLVM)
- enlazar en SSD (o tmpfs)
- utilizando el enlazador Gold en lugar del enlazador BFD predeterminado
Estoy construyendo un proyecto de C ++ basado en CMake de terceros.
Crear el proyecto en modo de lanzamiento solo lleva unos segundos. La etapa de enlace lleva menos de un segundo (cuando make
impresiones, Linking CXX executable myproject.exe
).
Construir en modo de depuración lleva más de un minuto. La mayor parte de este tiempo se usa para vincular el ejecutable. Esto sucede incluso durante construcciones posteriores después de cambios mínimos en el código.
La diferencia con el modo de lanzamiento parece ser la opción -g
frente a las -O3 -DNDEBUG
. ¿Se espera este comportamiento? He trabajado en proyectos de tamaño similar antes (~ 18k LOC), pero nunca he experimentado una diferencia tan grande en el tiempo de compilación entre los modos de depuración y liberación.
Esto toma 50 segundos:
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