2011-01-26 2 views
49

Je travaille sur un grand projet C++ construit avec cmake sur linux. Cmake fonctionne bien, produisant une horde de Makefiles dans l'arborescence des modules et des applications. L'exécution de gnu conduit à des erreurs de l'éditeur de liens. Comment puis-je faire make pour imprimer les commandes exactes avant de les exécuter?Faire des commandes d'impression cmake avant l'exécution

L'option -d n'imprime pas les commandes, mais beaucoup d'informations qui n'ont pas été utiles. L'option -n imprime toutes les commandes, mais ne les exécute pas, donc je ne peux pas dire si le problème est réel. En examinant la sortie standard de make -n, je ne vois aucune commande pertinente. Je soupçonne que certaines commandes changent en fonction des résultats des commandes précédentes, et la hiérarchie de Makefiles rend difficile de dire ce qui se passe réellement.

Je ne vois aucune autre option dans la page de manuel de make qui semble utile.

+2

double possible de [Utilisation Cmake avec GNU Make: Comment puis-je voir les commandes exactes] (http://stackoverflow.com/questions/2670121/using-cmake -with-gnu-faire-comment-peut-je-voir-les-exactes-commandes) – richq

Répondre

59

Assez sûr que cela fonctionnera:

make VERBOSE=1 

Vous devez également être en mesure d'ajouter à votre CMakeLists.txt pour réglés une fois.

set(CMAKE_VERBOSE_MAKEFILE on) 

Ceci est couvert par le CMake FAQ.

+2

Yup, ça l'a fait! La prochaine chose à déboguer: pourquoi n'ai-je pas pu trouver cela dans la documentation? – DarenW

+0

Y at-il un moyen, je peux personnaliser la sortie? Par exemple, si je veux insérer un écho personnalisé entre la compilation et la liaison comme echo "c'est la fin de la compilation et maintenant nous allons commencer à lier" ... – infoclogged

+0

J'ai trouvé la réponse -> add_custom_command (TARGET yourtargetname POST_BUILD COMMAND echo "WE ON A FINI COMPILING ") – infoclogged

9

Pour automake fichiers de compilation tentent

make V=1 
+0

Toujours bon d'avoir la version courte. +1 – ezdazuzena

Questions connexes