Jak wyświetlić listę wszystkich celów w marce?

18

Załóżmy, że masz strukturę projektu z dużą ilością plików Makefile, a istnieje plik Makefile najwyższego poziomu, który obejmuje wszystkie pozostałe.

Jak wymienić wszystkie możliwe cele?

Umiem pisać

make 

a następnie tabulowanie, aby uzyskać sugestie, na ogół by załatwiło sprawę, ale w moim przypadku jest 10000 celów. W ten sposób wyniki są przekazywane dalej, a także z jakiegoś powodu przewijanie listy powoduje zawieszanie się. Czy jest inny sposób?

Sogartar
źródło

Odpowiedzi:

24

Oto jak moduł uzupełniania basha makepobiera swoją listę:

make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}'

Drukuje listę celów rozdzielaną znakami nowej linii, bez stronicowania.

Chris Down
źródło
2
Może dodaj, | sort -uaby go posortować i usunąć duplikaty
BrainStone
jak | sort -ukomentarzu też
Mark Ch