无法理解makefile中的这段代码

时间:2015-06-04 08:50:51

标签: makefile contiki

我无法理解Contiki-os'原生平台的makefile中的以下代码。

NM       ?= nm
OBJCOPY  ?= objcopy
STRIP    ?= strip
ifdef WERROR
CFLAGSWERROR=-Werror -pedantic -std=c99 -Werror
endif
CFLAGSNO = -Wall -g -I/usr/local/include $(CFLAGSWERROR)
CFLAGS  += $(CFLAGSNO) -O

来源:https://github.com/contiki-os/contiki/blob/master/cpu/native/Makefile.native#L13-20

这不是我不理解的变量赋值,我的问题是什么是'WERROR'以及它与'CFLAGS'有什么关系?NM是指什么? CC指编译器,LD指链接器。

如果有人可以帮助我,那就太棒了。

1 个答案:

答案 0 :(得分:1)

如果定义了WERROR,则make文件会为编译添加选项,以便将警告视为错误。据推测,在某些时候某些东西将定义WERROR = 1触发更严格的构建。 CFLAGS将用于将源代码编译为目标代码的规则中。

来自:http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_7.html

编译C程序:

n.o是从n.c自动生成的,其形式为'$(CC)$(CPPFLAGS)$(CFLAGS)-c'。