makefile で複数のターゲットをビルドする場合、「make」と言うと、デフォルトですべてのターゲットが作成されます。すべてのデフォルトを別のものに変更することは可能ですか?
all : target1 target2
ここで、コマンド 'make' を実行すると、target1 のみをビルドする必要があります。
カールが言及したように、行から target2 を削除するだけです。
ただし、それでもすべてを target1 と target2 にしたい場合は、いくつかのオプションがあります...
どの make を使用しているかについては言及していませんが、これらの詳細はバージョンによって異なりますが、GNU make でどのように機能するかを詳しく説明します。
GNU make では、最初のゴールがデフォルトになります。したがって、次のような Makefile がある場合:
next:
@echo "next"
all:
@echo "All"
それは印刷されます:
$ make
next
デフォルトのゴールを変更することもできます:
.DEFAULT_GOAL=other
next:
@echo "next"
all:
@echo "All"
other:
@echo "other"
次のように表示されます。
$ make
other
これは次のとおりです。
$ make --version
GNU Make 3.81
target2
確かに、その行から削除するだけです。
次の行を追加するだけです。
target1:
ルール定義の前all
。名前all
は特別なものではありません。リストの最初のルールであるため、デフォルトになります。target1:
その行の前に追加することでtarget1
、デフォルトになります。ルールの複数の定義を許可するのは標準的な動作ではないことに注意してください (これは基本的に Makefile で動作が後で定義される偽のルールです) が、これは gnu make で機能します。うまくいかない場合は、 の定義のtarget1
前にの実際の定義を移動してくださいall
。