Makefile-macros
Makefile-マクロ
*make* プログラムを使用すると、変数に類似したマクロを使用できます。 マクロはMakefileで=ペアとして定義されます。 以下に例を示しました-
MACROS = -me
PSROFF = groff -Tps
DITROFF = groff -Tdvi
CFLAGS = -O -systype bsd43
LIBS = "-lncurses -lm -lsdl"
MYFACE = ":*)"
特別なマクロ
ターゲットルールセットでコマンドを発行する前に、事前定義された特定の特別なマクロがあります-
- $ @は、作成するファイルの名前です。
- $? 変更された依存の名前です。
たとえば、次のようなルールを使用できます-
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) $? $(LDFLAGS) -o $@
Alternatively:
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) [email protected] $(LDFLAGS) -o $@
この例では、$ @は_hello_および$?を表します。 または、$ @。cppは、変更されたすべてのソースファイルを取得します。
暗黙のルールで使用される特別なマクロがさらに2つあります。 彼らは-
- $ <アクションを引き起こした関連ファイルの名前。 $ ターゲットおよび依存ファイルによって共有されるプレフィックス。
一般的な暗黙のルールは、.cpp(ソースファイル)から.o(オブジェクト)ファイルを作成することです。
.cpp.o:
$(CC) $(CFLAGS) -c $<
Alternatively:
.cpp.o:
$(CC) $(CFLAGS) -c $*.c
従来のマクロ
さまざまなデフォルトマクロがあります。 それらを確認するには、「make -p」と入力してデフォルトを出力します。 ほとんどは、それらが使用されるルールから非常に明白です。
これらの事前定義変数、つまり暗黙のルールで使用されるマクロは、2つのクラスに分類されます。 彼らは次のとおりです-
- プログラムの名前であるマクロ(CCなど) *プログラムの引数を含むマクロ(CFLAGSなど)。
以下は、メイクファイルの組み込みルールでプログラムの名前として使用される一般的な変数のいくつかの表です-
Sr.No | Variables & Description |
---|---|
1 |
アーカイブ管理プログラム。デフォルトは「ar」です。 |
2 |
AS アセンブリファイルをコンパイルするプログラム。デフォルトは「as」です。 |
3 |
CC Cプログラムをコンパイルするプログラム。デフォルトは「cc」です。 |
4 |
CO RCSからファイルをチェックアウトするプログラム。デフォルトは「co」です。 |
5 |
CXX C プログラムをコンパイルするプログラム。デフォルトは「g 」です。 |
6 |
CPP Cプリプロセッサーを実行するためのプログラム。結果は標準出力に出力されます。デフォルトは `$(CC)-E 'です。 |
7 |
FC FortranおよびRatforプログラムをコンパイルまたは前処理するプログラム。デフォルトは `f77 'です。 |
8 |
GET SCCSからファイルを抽出するプログラム。デフォルトは「get」です。 |
9 |
LEX Lex文法をソースコードに変換するために使用するプログラム。デフォルトは「lex」です。 |
10 |
YACC Yacc文法をソースコードに変換するために使用するプログラム。デフォルトは「yacc」です。 |
11 |
LINT ソースコードでlintを実行するために使用するプログラム。デフォルトは「lint」です。 |
12 |
M2C Modula-2ソースコードのコンパイルに使用するプログラム。デフォルトは「m2c」です。 |
13 |
PC Pascalプログラムをコンパイルするためのプログラム。デフォルトは「pc」です。 |
14 |
MAKEINFO TexinfoソースファイルをInfoファイルに変換するプログラム。デフォルトは「makeinfo」です。 |
15 |
TEX TeXソースからTeX dviファイルを作成するプログラム。デフォルトは `tex 'です。 |
16 |
TEXI2DVI TexinfoソースからTeX dviファイルを作成するプログラム。デフォルトは「texi2dvi」です。 |
17 |
WEAVE WebをTeXに変換するプログラム。デフォルトは「weave」です。 |
18 |
CWEAVE C WebをTeXに変換するプログラム。デフォルトは「cweave」です。 |
19 |
TANGLE WebをPascalに翻訳するプログラム。デフォルトは「もつれ」です。 |
20 |
CTANGLE C WebをCに変換するプログラム。デフォルトは「ctangle」です。 |
21 |
RM ファイルを削除するコマンド。デフォルトは「rm -f」です。 |
上記のプログラムの追加引数が値である変数の表を次に示します。 特に明記しない限り、これらすべてのデフォルト値は空の文字列です。
Sr.No. | Variables & Description |
---|---|
1 |
ARFLAGS アーカイブ管理プログラムに与えるフラグ。デフォルトは `rv 'です。 |
2 |
ASFLAGS
|
3 |
CFLAGS Cコンパイラに与える追加のフラグ。 |
4 |
CXXFLAGS Cコンパイラに与える追加のフラグ。 |
5 |
COFLAGS RCS coプログラムに与える追加のフラグ。 |
6 |
CPPFLAGS Cプリプロセッサとそれを使用するプログラム(CやFortranコンパイラなど)に与える追加フラグ。 |
7 |
FFLAGS Fortranコンパイラーに与える追加のフラグ。 |
8 |
GFLAGS SCCS取得プログラムに与える追加のフラグ。 |
9 |
LDFLAGS コンパイラーがリンカー「ld」を呼び出すことになっているときにコンパイラーに与える追加フラグ。 |
10 |
LFLAGS レックスに与える追加のフラグ。 |
11 |
YFLAGS Yaccに与える追加のフラグ。 |
12 |
PFLAGS Pascalコンパイラに渡す追加のフラグ。 |
13 |
RFLAGS Ratforプログラム用のFortranコンパイラーに与える追加フラグ。 |
14 |
LINTFLAGS 糸くずに与える追加フラグ。 |
注-「-R」または「--no-builtin-variables」オプションを使用して、暗黙のルールで使用されるすべての変数をキャンセルできます。
以下に示すように、コマンドラインでマクロを定義することもできます-
make CPP =/home/courses/cop4530/spring02