Estoy usando Scientific Linux (SL). Estoy tratando de compilar un proyecto que utiliza un montón de archivos C ++ (.cpp).
En el directorio user/project/Build
, entro make
para compilar y vincular todos los archivos .cpp. Entonces tengo que ir user/run/
y luego escribir./run.sh values.txt
Para depurar con GDB, tengo que ir user/run
y luego escribir gdb ../project/Build/bin/Project
y para ejecutar, entro run -Project INPUT/inputfile.txt
. Sin embargo, estoy tratando de imprimir el valor de la variable usando p variablename
.
Sin embargo, recibo el mensaje s1 = <value optimized out>
. He investigado en línea, y parece que necesito compilar sin optimizaciones -O0
para resolver esto. ¿Pero dónde ingreso eso? En el CMakeLists
? Si es así, ¿qué CMakeLists? ¿El de project/Build
o project/src/project
?
fuente
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Respuestas:
La respuesta de Chip fue útil, sin embargo, dado que la
SET
línea sobrescribióCMAKE_CXX_FLAGS_DEBUG
esto eliminó el-g
valor predeterminado que causó que mi ejecutable se construyera sin información de depuración. Necesitaba hacer una pequeña modificación adicional a CMakeLists.txt en el directorio de origen del proyecto para obtener un ejecutable creado con información de depuración y-O0
optimizaciones (en la versión 2.8.12.2 de cmake).Agregué lo siguiente a CMakeLists.txt para agregar
-O0
y dejar-g
habilitado:Esto agrega la
-O0
optimización a los indicadores ya utilizados para la depuración por CMake y solo se incluye para las compilaciones de GCC si está utilizando un proyecto multiplataforma.fuente
O en el momento de la invocación:
y luego confirme con:
para mostrar los comandos de compilación de GCC como se explica en: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Probado en Ubuntu 17.04, CMake 3.7.2.
fuente
Agregue esto a CMakeLists.txt (el que está en el directorio de origen del proyecto; no toque nada en el directorio de compilación):
y entonces
trabajará. Alternativamente, solo agregue esto a CMakeLists.txt:
fuente