make実行時にマクロ定義を与える

次のようにコマンドラインに指定することで,マクロCCの値を強制的に書き換えることができる (マクロCCを書き換えることで使用するCコンパイラを変更することを意図している).

$ make CC=gcc

もう少し実用的な例

プログラム開発中に,テスト目的である変数の値を表示したいというような場合がある. 下の例では開発中はTESTというマクロを定義して 関数fact()の実引数としてどんな値がわたってくるのか ながめてみようとしている.

#include <stdio.h>

int fact(int n)
{
#if defined(TEST)
    printf("fact: %d\n", n);
#endif
    return n > 1 ? n * fact(n - 1) : 1;
}

int main(void)
{
    int i;
    for (i = 0; i < 6; ++i)
      printf("%d\n", fact(i));
    return 0;
}

コマンドラインから引数“CFLAGS=-DTEST”を与えてmakeすると次のような結果になる.

$ make CFLAGS=-DTEST
gcc -DTEST    fact.c   -o fact

※環境によっては次のようなMakefileが必要になるかも. 通常は,これと同等の暗黙ルールが既定義になっているはずなので, たいていの場合Makefileは不要で, Makefileを作らずに上記のコマンドを実行するだけでよいはず.

Makefile
.c:
        $(CC) $(CFLAGS) -o $@ $<

ソースファイル ダウンロード


はたいたかし
Home > Dev > make