q4.c、q3.c、q2.c、q1.c の 4 つのファイルの Makefile を作成する必要があります。これら 4 つの Makefile の形式はどのようになりますか? 前処理、コンパイル、アセンブル、クリーンのすべてに必要なフラグはわかっていますが、4 つのプログラムの場合、ファイルの形式はどのようになりますか?
補足: すべてのプログラムは同じディレクトリにあります。
助けてくれてありがとう - Dave L
q4.c、q3.c、q2.c、q1.c の 4 つのファイルの Makefile を作成する必要があります。これら 4 つの Makefile の形式はどのようになりますか? 前処理、コンパイル、アセンブル、クリーンのすべてに必要なフラグはわかっていますが、4 つのプログラムの場合、ファイルの形式はどのようになりますか?
補足: すべてのプログラムは同じディレクトリにあります。
助けてくれてありがとう - Dave L
Makefile は、アクション、依存関係などを含むビルド プロセスを記述するための非常に包括的で柔軟な方法です。それを記述する方法は多数あり、質問に対する単純な答えは決してありません。例として、単純なケースで Makefile がどのように見えるかを以下に示します。
BIN = q1 q2 q3 q4
all: $(BIN)
clean:
$(RM) $(BIN)
ソース ファイルを頻繁に追加および削除し、各ファイルをスタンドアロンの実行可能ファイルにコンパイルする必要がある場合も、次のようになります。
SRC = $(wildcard *.c)
BIN = $(patsubst %.c,%,$(SRC))
all: $(BIN)
clean:
$(RM) $(BIN)
また、プロジェクトのサイズと要件に応じて、ますます複雑になる可能性があります。
上記の例のような単純なものから始めて、ドキュメントの作成を読んで、何ができるかを理解することをお勧めします。
また、Make はかなり古く、複雑な技術です。習得するには多くの時間と練習が必要であり、反応はほとんどありません。代替手段があります。私は個人的にCMakeをお勧めします。CMakeの方がはるかに簡単で、ビルド スクリプトを生成できる少し高レベルのシステムです。Makefile、Xcode などをサポートしています。見た方が断然悪い。
gnu make を使用していて、それぞれのフラグが同じ場合:
CFLAGS=-ffoo -O2 -fguess-at-hard-math
all: q1 q2 q3 q4
それ以外の場合は、それぞれを明示的に指定できます
all: q1 q2 q3 q4
q1: q1.c
gcc -o q1 q1.c
q2: q2.c
gcc -o q2 -fq2-flags q2.c
...