2011-01-26 7 views
49

Я работаю над большим проектом на C++, созданным с помощью cmake on linux. Cmake работает нормально, создавая орду Makefiles в дереве модулей и приложений. Выполнение gnu make приводит к ошибкам компоновщика. Как я могу заставить make распечатать точные команды перед их запуском?Выполнение команд команды cmake перед выполнением

Опция -d не печатает команды, но много информации, которая не была полезной.

Опция -n печатает все команды, но не запускает их, поэтому я не могу сказать, что это была проблема. Исследуя stdout из make -n, я не вижу никаких соответствующих команд. Я подозреваю, что некоторые команды меняются в зависимости от результатов более ранних команд, а иерархия Make-файлов затрудняет определение того, что действительно происходит.

Я не вижу других вариантов в man-странице make, которые вам кажутся полезными.

+2

возможно дубликат [Использование CMake с GNU Make: Как я могу увидеть точные команды] (http://stackoverflow.com/questions/2670121/using-cmake -with-gnu-make-how-can-i-see-the-exact-commands) – richq

ответ

59

Справедливо уверен, что это будет работать:

make VERBOSE=1 

Вы также должны быть в состоянии добавить к вашей CMakeLists.txt навсегда установить, что.

set(CMAKE_VERBOSE_MAKEFILE on) 

Это покрытие находится в CMake FAQ.

+2

Yup, вот и все! Следующая вещь для отладки: почему я не смог найти это в документации? – DarenW

+0

Есть ли способ, я могу настроить выход? Например, если я хочу вставить пользовательское эхо между компиляцией и связыванием, например, echo «это конец компиляции, и теперь мы начнем связывать» ... – infoclogged

+0

Я нашел ответ -> add_custom_command (TARGET yourtargetname POST_BUILD COMMAND echo "WE «ЗАВЕРШЕНО СОСТАВЛЕНИЕ») – infoclogged

9

Для Automake генерироваться Makefiles попробовать

make V=1 
+0

Всегда хорошо иметь короткую версию. +1 – ezdazuzena

Смежные вопросы