2015-06-12 7 views
7

Czuję się prawie głupio, gdy o to pytam, ale nie mogłem znaleźć niczego na ten temat ...Jak wyświetlić listę zdefiniowanych celów make z wiersza poleceń?

Załóżmy, że mam projekt cmake zawierający szereg celów: biblioteki, pliki wykonywalne, cele zewnętrzne, .... Jak wyświetlić je za pomocą interfejsu wiersza poleceń cmake. Chcę listę rzeczy, które są ważne, aby zastąpić $target w następującej linii poleceń.

cmake . && cmake --build . --target $target 

Dużo punktów bonusowych na rozwiązanie, które używa ani grep ani znaleźć ani pytona ani perla ani ... - masz pomysł.

Odpowiedz

9

Dla Makefile środowiskach generator kompilacji można użyć

cmake.exe --build . --target help 

I nie jest rozwiązaniem graficznym wyjście (przykład znaleźć here):

cmake.exe . --graphviz=test.graph 
dotty test.graph 

Zobacz także Generating Dependency Graphs with CMake i CMake Graphviz Output Cleaner.

Jeśli nie masz dotty zainstalowany, można jeszcze zrobić Zależności docelowe widoczne umożliwiając GLOBAL_DEPENDS_DEBUG_MODE w CMakeLists.txt:

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) 

disadavantage tutaj jest to, że nie można go wywołać z linii poleceń . Będzie on zawsze wyświetlany na stderr podczas generowania środowiska make.

Referencje

+0

Cóż, byłoby miło mieć coś, co jest agnostykiem generatora bazowego, ale uczynić prace dla mnie. Nie podoba mi się graficzne rozwiązanie wyjściowe, ponieważ wymaga ono dotty, które uważam za gorsze niż perl, grep i bash, ponieważ nie jest to domyślna instalacja jakiegokolwiek używanego systemu. Wciąż przyznam punkty za rozwiązanie oparte na makijażu. – Holger

+0

Dzięki. Dodałem informacje o używaniu globalnej właściwości 'GLOBAL_DEPENDS_DEBUG_MODE'. To zadziała bez 'dotty', a nawet bez opcji wiersza poleceń' --graphviz'. I - ponieważ również wcześniej tego nie zauważyłem w CMake - planuję opublikować żądanie funkcji dla opcji wiersza poleceń '--list-all-targets' na narzędziu śledzenia błędów CMake. Będę Cię tutaj aktualizował, jeśli otrzymam pozytywną opinię. – Florian

+4

Zauważ, że '' cmake --build. --target help'' jest w zasadzie taki sam jak '' make help'' – Ignitor