2011-01-26 14 views
49

Pracuję nad dużym projektem C++ zbudowanym za pomocą cmake na Linuksie. Cmake działa poprawnie, tworząc hordę plików Makefile w drzewie modułów i aplikacji. Prowadzenie gnu powoduje błędy w linkerach. Jak mogę zrobić, aby wydrukować dokładne polecenia przed ich uruchomieniem?Wykonywanie poleceń cmake print przed wykonaniem

Opcja -d nie drukuje poleceń, ale zawiera wiele informacji, które nie były pomocne.

Opcja -n drukuje wszystkie polecenia, ale ich nie uruchamia, więc nie mogę powiedzieć, że to był problem. Analizując standardowe wyjście z -n, nie widzę odpowiednich poleceń. Podejrzewam, że niektóre polecenia zmieniają się w zależności od wyników wcześniejszych poleceń, a hierarchia plików Makefile sprawia, że ​​trudno jest powiedzieć, co się naprawdę dzieje.

Nie widzę żadnych innych opcji na stronie man, które wydają się pomocne.

+2

możliwe duplikat [CWprowadä Korzystanie z GNU Marka: Jak widzę dokładnie polecenia] (http://stackoverflow.com/questions/2670121/using-cmake -with-gnu-make-how-can-i-see-the-exact-commands) – richq

Odpowiedz

59

Dość pewien, że to będzie działać:

make VERBOSE=1 

Należy również być w stanie dodać do swojej CMakeLists.txt na stałe ustawić to.

set(CMAKE_VERBOSE_MAKEFILE on) 

Jest to objęte CMake FAQ.

+2

Tak, to zrobiło! Następna sprawa do debugowania: dlaczego nie udało mi się znaleźć tego w dokumentacji? – DarenW

+0

Czy istnieje sposób, mogę dostosować wyjście? Na przykład, jeśli chcę wstawić niestandardowe echo między kompilowaniem a łączeniem, takie jak echo "to koniec kompilacji, a teraz zaczniemy łączyć" ... – infoclogged

+0

Znalazłem odpowiedź -> add_custom_command (TARGET twoja_nazwa_testu POST_BUILD POLECENIE echo "WE HAVE FINILED ") – infoclogged

9

Dla automake generowane Makefile spróbować

make V=1 
+0

Zawsze dobrze mieć krótką wersję. +1 – ezdazuzena

Powiązane problemy