Использование CMake с GNU Make: Как я могу увидеть точные команды? - PullRequest
232 голосов
/ 19 апреля 2010

Я использую CMake с GNU Make и хотел бы точно видеть все команды (например, как выполняется компилятор, все флаги и т. Д.).

В GNU make есть --debug, но, похоже, это не очень полезно, есть ли другие варианты? Предоставляет ли CMake дополнительные флаги в сгенерированном Makefile для отладки?

Ответы [ 5 ]

320 голосов
/ 20 апреля 2010

Когда вы запускаете make, добавьте VERBOSE=1, чтобы увидеть полный вывод команды. Например:

cmake .
make VERBOSE=1

Или вы можете добавить -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON к команде cmake для вывода постоянных подробных команд из сгенерированных файлов Makefile.

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

Чтобы уменьшить некоторые, возможно, менее интересные результаты, вы можете использовать следующие параметры. Опция CMAKE_RULE_MESSAGES=OFF удаляет строки типа [33%] Building C object ... , тогда как --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
63 голосов
/ 16 ноября 2015

Удобно установить опцию в файле CMakeLists.txt как:

set(CMAKE_VERBOSE_MAKEFILE ON)
7 голосов
/ 20 апреля 2010

Если вы используете графический интерфейс CMake, переключитесь на расширенный вид, и тогда опция будет называться CMAKE_VERBOSE_MAKEFILE.

3 голосов
/ 26 июня 2018

Или просто экспортируйте переменную среды VERBOSE в оболочку следующим образом: export VERBOSE=1

2 голосов
/ 06 декабря 2016

Я пытался сделать что-то подобное, чтобы убедиться, что флаг -ggdb присутствует.

Вызовите make в чистой директории и добавьте флаг, который вы ищете. Ищите debug вместо ggdb Я бы просто написал.

make VERBOSE=1 | grep debug

Флаг -ggdb был достаточно неясен, поэтому появлялись только команды компиляции.

...