我是新的使用makefile,我有一些makefile.其中一个有我试图理解的这些陈述,但我做不到.
# 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
阿姆里
本质上,makefile正在进行一系列检查,并根据某些变量的状态添加编译器标志.例如:
ifeq ($(DEBUG), true) CFLAGS+=-DDEBUG -g endif
如果DEBUG变量$(DEBUG)设置为true,则定义宏DEBUG,并将编译器设置为输出调试二进制文件(-g).
每个其他声明大致相同的模式.
这将检查环境变量的值,并使用编译器的特定选项配置构建过程(我认为).