3

私はメイクファイルを初めて使用し、いくつかのメイクファイルを持っています。そのうちの 1 つに、理解しようとしたが理解できないステートメントがあります。

このメイクファイルは何をしているのですか?

# debugging support
ifeq ($(DEBUG), true)
CFLAGS+=-DDEBUG -g
endif 

ifeq ($(DEBUG), gdb)
CFLAGS+=-g
endif

ifeq ($(PROFILING), true)
CFLAGS+=-p
endif

# symbolic names debugging
ifeq ($(DEBUG_NAMES), true)
CFLAGS+=-DDEBUG_NAMES
endif 

# architecture TODO: add others
ifeq ($(ARCH), unix)
CFLAGS+=-DUNIX
endif

# TODO: GC settings
ifeq ($(HEAP), malloc)
CFLAGS+=-DHEAP_MALLOC
endif

ifeq ($(STACK), malloc)
CFLAGS+=-DSTACK_MALLOC
endif

# class loading method
ifeq ($(CLASS), external)
CFLAGS+=-DEXTERNAL_TUK
endif

# monitor allocation
ifeq ($(MONITORS), ondemand)
CFLAGS+=-DON_DEMAND_MONITORS
endif

アムリ

4

3 に答える 3

6

基本的に、メイクファイルは一連のチェックを行い、特定の変数の状態に基づいてコンパイラ フラグを追加します。例えば:

ifeq ($(DEBUG), true)

CFLAGS+=-DDEBUG -g

endif

DEBUG 変数 $(DEBUG) が true に設定されている場合は、マクロ DEBUG を定義し、デバッグ バイナリを出力するようにコンパイラを設定します (-g)。

他のすべてのステートメントは、ほぼ同じパターンです。

于 2008-11-24T18:21:40.453 に答える
5

これにより、環境変数の値がチェックされ、ビルド プロセスがコンパイラの特定のオプションで構成されます (と思います)。

于 2008-11-24T18:20:33.827 に答える
2

CFLAGS は、呼び出されたときに C コンパイラに渡される引数の文字列です。

引数の意味がわからない場合は、C コンパイラのヘルプを参照する必要があります。例えば:

man cc
man gcc
cc --help
gcc --help
于 2008-11-24T20:36:56.920 に答える