Make

如何列出make中的所有目標?

  • February 13, 2021

假設您有一個包含許多 Makefile 的項目結構,並且有一個包含所有其他 Makefile 的頂級 Makefile。

如何列出所有可能的目標?

我知道寫作

make 

然後點擊獲取建議通常可以解決問題,但在我的情況下,有 10000 個目標。這樣做會使結果通過更多,並且由於某種原因滾動列表會導致凍結。還有其他方法嗎?

這是 bash 完成模組make獲取其列表的方式:

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

它列印出一個以換行符分隔的目標列表,無需分頁。

FreeBSD 和 NetBSD make(1) 有一個名為.ALLTARGETS. 你可以像這樣列印出它的內容

make -V .ALLTARGETS

不幸的是,這將列印出一個以空格分隔的列表。我發現以下更有用

make -V .ALLTARGETS | tr ' ' '\n'

它在自己的行上列印出每個目標。

引用自:https://unix.stackexchange.com/questions/230047