多くのMakefileを含むプロジェクト構造があり、他のすべてのMakefileを含む最上位のMakefileがあるとします。
可能なすべての目標をリストする方法は?
私は書くことを知っています
make
その後、Tabキーを押して提案を受け取るのが一般的ですが、私の場合は10,000のターゲットがありました。そうすると、結果が次に渡されます。もっとそして何らかの理由でリストをスクロールすると停止現象が発生します。別の方法がありますか?
答え1
Bash Completeモジュールmake
がリストを取得する方法は次のとおりです。
make -qp |
awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}' |
sort -u
改ページなしで改行で区切られたターゲットのリストを印刷します。
答え2
FreeBSDとNetBSD make(1)にはという名前の組み込み変数があります.ALLTARGETS
。次のように内容を印刷できます。
make -V .ALLTARGETS
残念ながら、これは空白で区切られたリストを印刷します。次はもっと役に立つと思いました。
make -V .ALLTARGETS | tr ' ' '\n'
各ターゲットを独自の行に印刷します。
答え3
これはスクリプトが実行する作業を非常に単純化したバージョンですbash-completion
。
make -npq : 2> /dev/null | \
awk -v RS= -F: '$1 ~ /^[^#%.]+$/ { print $1 }'