メイクファイルを書き込むときは、通常、最後から始めて、最初に向かって作業します。あなたは最終製品から出発し、出発点からそれを作り出す方法についてのルールを与えます。
この場合、A
とC
の2つの最終製品があるようです。
all: A C
ターゲットをコマンドラインで指定しない場合、makeはmakefileに表示される最初のターゲットをビルドします。したがって、これをファイルの最初のターゲットとして、その下に他のターゲットを配置したいと考えています。あなたがそれを木のように考えるなら、これは木の根であり、下の各項目はその木の枝です。
このルートの下にではないではないセカンダリターゲットを定義することもできます。たとえば、多くの(ほとんどの)メークファイルには、ビルド時に作成されるすべての中間ファイルを削除するclean
という名前のターゲットが含まれています。ユーザがmake clean
を呼び出すときにはmake
をコマンドとして発行するのではなく、のみをとします。その後
A: A.o B.o
$(CC) -o A A.o B.o
C: B.o C.o
$(CC) -o B B.o C.o
(必要であれば - それはここではありません)あなたは言うだろう:とにかく
、その後、あなたはそれらのそれぞれが依存し、どのようにそれが依存するものから、それを作成するかについて、それを伝えますそれはどのくらい.o
ファイルが.c
ファイルに依存するかについてです。しかしGmakeは(ほぼmake
のツールのように)、一致するオブジェクトファイルを生成するためにCまたはC++ファイルをコンパイルする方法を伝えるルールを組み込んでいます。これらはあなたのメイクファイルがトップに向けて、このようなものが含まれてようについて次のようになります。
あなたが必要とするフラグにそれを設定したいので、コンパイラへのフラグとしてCFLAGSの現在の値を渡し
CC = gcc
.c.o:
$(CC) $(CFLAGS) -c $*.c
- にあなたのケース:
通常は、通常はターゲットの前にあるメイクファイルの先頭に配置します。
これは、makefileで行うことができるすべてをカバーすることさえできません。 たくさんのショートカットのがあります。あなたがたくさんのファイルを扱っているときに便利ですが、3つのソースファイルしか持っていないときは本当に便利です。
「ake:致命的なエラー:ターゲットを作る方法が分からない」Bo –
「%.o:%.c [ENTER] [TAB] gcc -o $ @ $ <'somewhere :-) – Gui13