web-dev-qa-db-ja.com

makeのすべてのターゲットをリストする方法は?

たくさんのMakefileを持つプロジェクト構造があり、他のすべてを含むトップレベルのMakefileがあるとします。

どのようにしてすべての可能なターゲットをリストできますか?

私は書くことを知っています

make 

次に、タブを押して提案を取得すると、通常はうまくいきますが、私の場合は10000のターゲットがあります。これを行うと、結果がmoreを通過し、何らかの理由でリストをスクロールするとフリーズします。別の方法はありますか?

26
Sogartar

これは、makeのbash補完モジュールがリストを取得する方法です。

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

ページングなしで、改行で区切られたターゲットのリストを出力します。

32
Chris Down

FreeBSDとNetBSDのmake(1)には、.ALLTARGETSと呼ばれる組み込み変数があります。このように内容を印刷できます

make -V .ALLTARGETS

残念ながら、スペースで区切られたリストが出力されます。次の方が便利だと思います

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

各ターゲットを独自の行に出力します。

1
Jose Quinteiro