メイクファイルで正規表現を理解していません手段?私は、私は次の行を持っているメイクファイルを、持っている
また、src
ディレクトリに20個のうち4つのファイルしか必要としないというルールはありますか?
メイクファイルで正規表現を理解していません手段?私は、私は次の行を持っているメイクファイルを、持っている
また、src
ディレクトリに20個のうち4つのファイルしか必要としないというルールはありますか?
.c.o:
は.c
で終わるすべてのファイルに一致し、同じ名前を定義する簡単なパターンルールを宣言したが、ターゲットとして.o
と。
$*
は、自動make変数であり、パターンの一致部分に展開されます。 main.c
と一致した場合、$*
はmain
となります。
$<
は、最初の前提条件の名前を含む自動作成変数です(したがって、たとえばmain.c
)。 :xx=yy
では、makeの変数の最後にある文字列を置き換えることができるので、${<:.c=.o}
はmain.c
をmain.o
に変換します。
説明したように、構文は奇妙で不要です。そのようなルールを記述するための標準的な方法は、次のとおりです。すべてのCファイルをつかむ:パターンのこの種は、
.SUFFIXES: .c .o
.c.o:
$(CC) $(CFLAGS) -c [email protected] $<
私の質問:srcディレクトリに20個のファイル* .cがありますが、makefileは4個のファイルsec2dte_mq.c、sec2dte_2ici.c、adt.c、dte_mq.cのみをコンパイルする必要があります。他の人の中でどのようにそれらを見つけることができますか?それはすべてをコンパイルし、必要な独立性を持たないものです。 – SamOl
これはあなたが示したルールとは関係ありません。4つのファイルだけが必要な場合は、おそらくこれらの4つのオブジェクトファイルをリンクするルールがあります。 'make'は、最終目標を達成するために必要なことをすることです。他の '.o'ファイルに依存するものがなければ、' make'は一致する前提条件を見つけたという理由だけでこのルールを適用しません。 –
、完全なメイクファイルを投稿するために投稿を更新します。ここで説明した4つのファイルはどこにあるのか説明してください。 – SamOl
何reqular表現 –
私の推測ではありませんルールがない
make
ためまたは、異なる拡張子のCファイルと同じ名前のOファイルにコンパイルします。 – tilz0R
私はこのことが実際にはうまくいきません。 '$ *'はパターンで '%'とマッチしたものですが、このルールには '%'はありません。 – aragaer