Używanie CMake z GNU Make: Jak mogę zobaczyć dokładne polecenia?

Używam CMake z GNU Make i chciałbym dokładnie zobaczyć wszystkie polecenia (na przykład jak kompilator jest wykonywany, wszystkie flagi itp.).

GNU make mA --debug, ale wydaje się, że nie jest to pomocne, czy są jakieś inne opcje? Czy CMake dostarcza dodatkowe flagi w wygenerowanym pliku Makefile do celów debugowania?

Author: usr1234567, 2010-04-19

5 answers

Po uruchomieniu make dodaj VERBOSE=1, aby zobaczyć pełne wyjście polecenia. Na przykład:

cmake .
make VERBOSE=1

Lub możesz dodać -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON do polecenia cmake, aby uzyskać stałe, szczegółowe wyjście z wygenerowanych plików Makefile.

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

Aby zredukować nieco mniej interesujące wyniki, możesz użyć następujących opcji. Opcja CMAKE_RULE_MESSAGES=OFF usuwa linie takie jak [33%] Budynek C obiektu..., podczas gdy --no-print-directory mówi make, aby nie drukował bieżącego katalogu filtrując linie takie jak make[1]: Entering directory i make[1]: Leaving directory.

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
 261
Author: richq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-01 09:01:27

Wygodne jest ustawienie opcji w pliku CMakeLists.txt jako:

set(CMAKE_VERBOSE_MAKEFILE ON)
 51
Author: James Hirschorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-05 12:55:00

Jeśli używasz interfejsu graficznego CMake, zamień go na Widok zaawansowany, a następnie opcja nazywa się CMAKE_VERBOSE_MAKEFILE.

 6
Author: SteveL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-20 07:43:12

Lub po prostu Eksportuj zmienną środowiskową VERBOSE na powłoce w następujący sposób: export VERBOSE=1

 2
Author: makerj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-26 06:35:50

Próbowałem czegoś podobnego, aby upewnić się, że flaga -ggdb jest obecna.

Wywołanie make w czystym katalogu i grep flagi szukasz. Szukam debug zamiast ggdb po prostu bym napisał.

make VERBOSE=1 | grep debug

Znacznik -ggdb był na tyle niejasny, że pojawiały się tylko polecenia kompilacji.

 1
Author: Alexander Griffith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 07:24:59