无法理解 makefile 中的这段代码

Unable to understand this piece of code in a makefile

我无法理解来自 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 指的是链接器。

如果有人能帮助我就太好了。

如果定义了 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”。