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など)。

以下は、makefileの組み込みルールでプログラムの名前として使用されるいくつかの一般的な変数の表です。

シニア番号 変数と説明
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ソースからTeXdviファイルを作成するプログラム。デフォルトは `tex 'です。

16

TEXI2DVI

TexinfoソースからTeXdviファイルを作成するプログラム。デフォルトは `texi2dvi 'です。

17

WEAVE

WebをTeXに変換するプログラム。デフォルトは「織り」です。

18

CWEAVE

CWebをTeXに変換するプログラム。デフォルトは `cweave 'です。

19

TANGLE

WebをPascalに翻訳するプログラム。デフォルトは `tangle 'です。

20

CTANGLE

CWebをCに変換するプログラム。デフォルトは `ctangle 'です。

21

RM

ファイルを削除するコマンド。デフォルトは `rm -f 'です。

これは、上記のプログラムの追加の引数である値を持つ変数の表です。特に明記されていない限り、これらすべてのデフォルト値は空の文字列です。

シニア番号 変数と説明
1

ARFLAGS

アーカイブ維持プログラムに与えるフラグ。デフォルトは `rv 'です。

2

ASFLAGS

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

3

CFLAGS

Cコンパイラに与える追加のフラグ。

4

CXXFLAGS

Cコンパイラに与える追加のフラグ。

5

COFLAGS

RCS共同プログラムに与える追加のフラグ。

6

CPPFLAGS

Cプリプロセッサとそれを使用するプログラム(CおよびFortranコンパイラなど)に与える追加のフラグ。

7

FFLAGS

Fortranコンパイラに与える追加のフラグ。

8

GFLAGS

SCCSgetプログラムに与える追加のフラグ。

9

LDFLAGS

コンパイラがリンカ `ld 'を呼び出すことになっているときにコンパイラに与える追加のフラグ。

10

LFLAGS

Lexに与える追加のフラグ。

11

YFLAGS

Yaccに与える追加のフラグ。

12

PFLAGS

Pascalコンパイラに与える追加のフラグ。

13

RFLAGS

Ratforプログラム用のFortranコンパイラーに与える追加のフラグ。

14

LINTFLAGS

糸くずに与える追加のフラグ。

NOTE −「-R」または「--no-builtin-variables」オプションを使用して、暗黙のルールで使用されるすべての変数をキャンセルできます。

以下に示すように、コマンドラインでマクロを定義することもできます。

make CPP = /home/courses/cop4530/spring02