Я использую Scientific Linux (SL). Я пытаюсь скомпилировать проект, который использует кучу файлов C ++ (.cpp).
В каталоге user/project/Build
я ввожу, make
чтобы скомпилировать и связать все файлы .cpp. Затем я должен пойти user/run/
и затем набрать./run.sh values.txt
Для отладки с помощью GDB мне нужно перейти, user/run
а затем ввести gdb ../project/Build/bin/Project
и запустить, я ввожу run -Project INPUT/inputfile.txt
. Тем не менее, я пытаюсь распечатать значение переменной с помощью p variablename
.
Тем не менее, я получаю сообщение s1 = <value optimized out>
. Я провел некоторые исследования в Интернете, и мне кажется, что мне нужно компилировать без оптимизации, -O0
чтобы решить эту проблему. Но куда мне это ввести? В CMakeLists
? Если да, то какие CMakeLists? Тот, в project/Build
или project/src/project
?
источник
cmake -DCMAKE_BUILD_TYPE=DEBUG ..
Ответы:
Ответ Чипа был полезен, однако, так как
SET
строка перезаписалаCMAKE_CXX_FLAGS_DEBUG
это, удалил-g
значение по умолчанию, из-за которого мой исполняемый файл был собран без отладочной информации. Мне нужно было сделать небольшую дополнительную модификацию CMakeLists.txt в исходном каталоге проекта, чтобы получить исполняемый файл, созданный с информацией об отладке и-O0
оптимизацией (в версии 2.8.12.2 для cmake).Я добавил следующее в CMakeLists.txt, чтобы добавить
-O0
и оставить-g
включенным:Это добавляет
-O0
оптимизацию к флагам, уже используемым для отладки CMake, и включается только для сборок GCC, если вы используете кроссплатформенный проект.источник
Или во время вызова:
и затем подтвердите с помощью:
чтобы показать команды сборки GCC, как объяснено по адресу: /programming/5820303/how-do-i-force-make-gcc-to-show-me-the-commands
Протестировано на Ubuntu 17.04, CMake 3.7.2.
источник
Добавьте это в CMakeLists.txt (тот, что находится в исходной директории проекта; ничего не трогайте в директории сборки):
а потом
буду работать. В качестве альтернативы просто добавьте это в CMakeLists.txt:
источник