Использование 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 был недостаточно понятен, что появились только команды компиляции.