Использование CMake с GNU Make: Как я могу видеть точные команды?
Я использую CMake с GNU Make и хотел бы видеть все команды в точности (например, как выполняется компилятор, все флаги и т.д.).
GNU make имеет --debug
, но, похоже, нет ничего полезного в других вариантах? Предоставляет ли CMake дополнительные флаги в сгенерированном Makefile для целей отладки?
Ответы
Ответ 1
Когда вы запустите make, добавьте VERBOSE=1
, чтобы увидеть полный вывод команды. Например:
cmake .
make VERBOSE=1
Или вы можете добавить -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
в команду cmake для получения постоянной подробной команды из созданных Make файлов.
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make
Чтобы уменьшить некоторые, возможно, менее интересные результаты, вы можете использовать следующие параметры. Опция CMAKE_RULE_MESSAGES=OFF
удаляет строки, такие как [33%] объект Building C..., а --no-print-directory
указывает make не распечатывать текущий каталог, отфильтровывающий строки, такие как make[1]: Entering directory
и make[1]: Leaving directory
.
cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
Ответ 2
Удобно установить параметр в файле CMakeLists.txt
следующим образом:
set(CMAKE_VERBOSE_MAKEFILE ON)
Ответ 3
Если вы используете графический интерфейс CMake, замените его на расширенный вид, а затем этот параметр называется CMAKE_VERBOSE_MAKEFILE.
Ответ 4
Или просто экспортируйте переменную среды VERBOSE в оболочку следующим образом:
export VERBOSE=1
Ответ 5
Я пытался что-то подобное, чтобы флаг -ggdb
присутствовал.
Позвоните в чистый каталог и grep, который вы ищете. Если вы ищете debug
, а не ggdb
, я просто напишу.
make VERBOSE=1 | grep debug
Флаг -ggdb
был недостаточно понятен, что появились только команды компиляции.