Solo quiero depurar algún código que se ejecute en Linux y necesito una compilación de depuración (-O0 -ggdb
). Por lo que añade estas cosas a mi CMakeLists.txt
:cmake CFLAGS CXXFLAGS modificación
set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_C_FLAGS "-O0 -ggdb")
set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_C_FLAGS_RELEASE "-O0 -ggdb")
set(CMAKE_CXX_FLAGS "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "-O0 -ggdb")
Cuando intenté compilar Me di detallado sobre el uso de make VERBOSE=1
Y he observado la salida, como este
... /usr/bin/c++ -D_BSD_SOURCE **-O0 -ggdb** -Wnon-virtual-dtor
-Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W
-Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS
-fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics
-fvisibility=hidden -fvisibility-inlines-hidden **-g -O2**
-fno-reorder-blocks -fno-schedule-insns -fno-inline ...
Al parecer, el código se compila con "-g -O2"
y esto no es lo que quiero ¿Cómo puedo forzarlo a usar "-O0 -ggdb"
solamente?
Si desea una versión depurada, simplemente realice una configuración de depuración en la línea de comandos. "cmake -DCMAKE_BUILD_TYPE = Depurar". La compilación resultante tendrá los indicadores de depuración activados para el sistema de compilación especificado. No hay razón para modificar el archivo cmake en sí. También puede enviar el valor CMAKE_C_FLAGS con otro argumento -D. – Atifm