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 makepara 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/runy luego escribir gdb ../project/Build/bin/Projecty 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 -O0para resolver esto. ¿Pero dónde ingreso eso? En el CMakeLists? Si es así, ¿qué CMakeLists? ¿El de project/Buildo project/src/project?
fuente

cmake -DCMAKE_BUILD_TYPE=DEBUG ..Respuestas:
La respuesta de Chip fue útil, sin embargo, dado que la
SETlínea sobrescribióCMAKE_CXX_FLAGS_DEBUGesto eliminó el-gvalor 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-O0optimizaciones (en la versión 2.8.12.2 de cmake).Agregué lo siguiente a CMakeLists.txt para agregar
-O0y dejar-ghabilitado:Esto agrega la
-O0optimizació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