2017-01-27 5 views
1

私はGNU makeの新機能です。 NETALソフトウェアのMakefileプログラムを理解できませんでした(hereからダウンロードできます)。GNU Makefileでの変数の割り当て

フォルダNETALには、make.incやmake.headersなどの他のファイルを含むMakefileファイルがあります。 私はこれらを除いて、フォルダNETAL内のMakefileのルールのほとんどを理解します。$(何

16行目と22 $(LINK.o)$^$(LDLIBSを)$(OUTPUT_OPTION)

LINK.o)と$(OUTPUT_OPTION)は?私はこれらの変数の定義/割り当てをどこでも(make.incとmake.headersではなく)見つけることができません。

ライン26および30 $(COMPILE.c)$ < $(OUTPUT_OPTION)変数$(COMPILE.c)と

同じ問題。私はその任務をどこにでも見つけることができません。また、私は$ <の意味を理解していない(そしてなぜ "<"の前にドル記号 "$"を付けなければならないのか)。私は、ドル記号がPHPのように変数のためであることを知っています。

私は、マニュアル(RTFM、私が知っている)読んで自分自身をノックアウトしています:GNU make manual

そして、これが私の読書の結果であるが:前提条件の章4.3種類で、私は私が何と同様の例を見つけました探して:残念ながら

OBJDIR := objdir 
    OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) 
    $(OBJDIR)/%.o : %.c 
     $(COMPILE.c) $(OUTPUT_OPTION) $< 
    all: $(OBJS) 
     $(OBJS): | $(OBJDIR) 
    $(OBJDIR): 
     mkdir $(OBJDIR) 

、 "$(COMPILE.c)"、 "$(OUTPUT_OPTION)"、および "$ <" であるかについて何の説明はありません。

誰かが私に理解しやすい方法でそれを説明することはできますか? 私はGoogleにさらにリンクできるようにリンク/キーワードを教えてください。

+1

'make -pn |それらの変数が何に定義されているかを正確に見ることができます。 – user657267

+1

GNU makeには、組み込みマクロとあらかじめ定義された暗黙ルールの大きなカタログがあります。これらはいくつかあります。それらをすべて見るには、 '-p'オプションを使ってルールデータベースを表示するようにmakeに依頼することができます。あなた自身のものではなく組み込みのマクロ/ルールを見たいだけなら、 'make -p -f/dev/null'(これはLinuxやMacOSのようなUNIXシステムを想定しています)を使うことができます。 – MadScientist

+0

user657267&MadScientist:ありがとう! – izza

答えて

2

これは、あらかじめ決められたmake変数です。 GNU make manual

オブジェクトファイルを生成するすべてのルールでは、変数OUTPUT_OPTIONが使用されます。 makeはこの変数をコンパイル時のオプションに応じて '-o $ @'を含むか、空にするように定義します。

makeが.Xのソースファイルをコンパイルするルールが変数COMPILE.xを使用している規則に従います。同様に、.xファイルから実行可能ファイルを生成するルールはLINK.xを使用します。 .xファイルを前処理するルールはPREPROCESS.xを使用します。

+0

どうもありがとうございました。したがって、この章(GNU makeマニュアル)から取ります:10.3暗黙のルールで使用される変数ですが、これはまだ読んでいません。 – izza