回答:
ビルドは、Makefileが理解しているように、多くのターゲットで構成されています。たとえば、必要なプロジェクトをビルドするには
このワークフローをmakefileで実装した場合、各ターゲットを個別に作成できます。たとえば、あなたが書いた場合
make file1.o
必要な場合にのみ、そのファイルをビルドします。
の名前all
は固定されていません。それは単なる慣習的な名前です。 all
targetは、それを呼び出すと、完全なビルドを作成するために必要なすべてのものがmakeによってビルドされることを示します。これは通常、ダミーのターゲットであり、ファイルを作成せず、他のファイルに依存するだけです。上記の例では、必要なものをすべてビルドすると、実行可能ファイルがビルドされ、他のファイルは依存関係として取り込まれます。したがって、makefileでは次のようになります。
all: executable1 executable2
all
通常、ターゲットはmakefileの最初のファイルですmake
。ターゲットを指定せずにコマンドラインで書き込むだけの場合、最初のターゲットがビルドされます。そして、あなたはそれがそうであると期待していますall
。
all
通常は.PHONY
ターゲットでもあります。詳細はこちら。
GNU Makeのマニュアルは、標準ターゲットのリストで明確な定義を提供all
しています。
Makefileの作成者がその規則に従っている場合、ターゲットは次のことをall
行う必要があります。
make
と同様に、と同じようにする必要がありmake all
ます。all
通常、1を達成することは、.PHONY
プログラム全体を形成する実行可能ファイルに依存するターゲットとして定義されます。
.PHONY : all
all : executable
2を達成するにall
は、makeファイルで定義された最初のターゲットにするか、デフォルトの目標として割り当てる必要があります。
.DEFAULT_GOAL := all
ターゲット「all」はダミーターゲットの例です。「all」というディスクには何もありません。つまり、「すべて作成」を行うと、makeは常にそれを作成する必要があると考え、そのターゲットのすべてのコマンドを実行します。これらのコマンドは通常、makefileが認識しているすべての最終製品を構築するコマンドですが、何でも実行できます。
ダミーターゲットの他の例は「クリーン」と「インストール」であり、それらは同じように機能します。
まだ読んでいない場合は、GNU Make Manualも読んでください。これも優れたチュートリアルです。