ほとんどのLinuxアプリは次のようにコンパイルされています:
make
make install clean
私が理解したように、makeは引数としてビルドターゲットの名前を取ります。したがって、install
はいくつかのファイルをコピーするターゲットであり、その後clean
は一時ファイルを削除するターゲットです。
しかし、引数が指定されていない場合(例では最初のコマンド)、どのターゲットがmake
ビルドされますか?
デフォルトでは、.
aka デフォルトの目標 ;で始まらない最初のターゲットを処理することから始まります。そのためには、他のターゲット、特に最初のターゲットが依存するターゲットを処理する必要があります。
GNU Make Manual はこれらすべてをカバーしており、驚くほど簡単で有益な読み物です。
他の人を数秒節約し、彼らがマニュアルを読まなくて済むように、ここに簡単な答えがあります。これをメイクファイルの先頭に追加します。
.DEFAULT_GOAL := mytarget
mytargetは、「make」が実行され、ターゲットが指定されていない場合に実行されるターゲットになります。
Makeの古いバージョン(<= 3.80)を使用している場合、これは機能しません。この場合、anonが言及していることを行うことができ、makeファイルの先頭にこれを追加するだけです:
.PHONY: default
default: mytarget ;
参照: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html
GNU Makeでは、.DEFAULT_GOAL
という特別な変数を使用して、デフォルトのmakeターゲットを指定することもできます。 Makefileの途中でこの変数の設定を解除して、ファイル内の次のターゲットをデフォルトのターゲットにすることもできます。