Makefile-macros

提供:Dev Guides
移動先:案内検索

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*

アーカイブ管理プログラム。デフォルトは「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

.s 'または .S’ファイルで明示的に呼び出されたときにアセンブラに与える追加のフラグ。

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