src/からソースを選択しinc/からヘッダーを選択するmakefileを書き込もうとしています。
〜/ Linuz / src:1.c、2.c、3.c..。
〜/ Linuz / inc:abc.h、dyz.h
で利用できるはずのmakefileを作成するのを手伝ってください
〜/ Linuz / some_other_dir / Makefile
PS:私のLinuxマシン用にコンパイルしようとしています。
ご提案ありがとうございます。
all: my_program
%.o: ../src/%.c
$(CC) $(CFLAGS) -I../inc/ -c -o $@ $^
my_program: 1.o 2.o 3.o
$(CC) $(LDFLAGS) -o $@ $^
clean:
rm -f *.o my_program
Makefile を~/Linuz/some_other_dir/に置く場合、次のルール
%.o: ../src/%.c
../src/
フォルダー ( ~/Linuz/src/ )から c ファイルを取得し、Makefile の同じフォルダーにオブジェクト (*.o) ファイルを作成します。
この-I../inc/
オプションは、makefile が../inc/
フォルダー ( ~/Linuz/inc/ ) からヘッダー ファイルを取得できることを意味します。
この規則は、makefile がオブジェクト ファイルからmy_program: 1.o 2.o 3.o
Makefile と同じディレクトリにバイナリを作成することを意味します。1.o
2.o
3.o
メイクマニュアルから:
$^ すべての前提条件の名前 (間にスペースを含む)。アーカイブ メンバーである前提条件の場合、指定されたメンバーのみが使用されます (アーカイブを参照)。ターゲットは、各ファイルが前提条件として何回リストされていても、依存する他の各ファイルに対する前提条件を 1 つだけ持っています。したがって、ターゲットの前提条件を複数回リストすると、$^ の値には名前のコピーが 1 つだけ含まれます。このリストには、注文のみの前提条件は含まれていません。それらについては、`$|' を参照してください。変数、以下。
$@ ルールのターゲットのファイル名。ターゲットがアーカイブ メンバーの場合、'$@' はアーカイブ ファイルの名前です。複数のターゲットを持つパターン ルール (「パターン ルールの紹介」を参照) では、「$@」は、ルールのレシピを実行させたターゲットの名前です。