2015-06-04 71 views
2

我無法理解Contiki-os本地平臺makefile中的以下代碼片段。無法理解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指向鏈接器。

如果有人能夠幫助我,那將會很棒。

+0

你到底不明白什麼?也許http://stackoverflow.com/questions/448910/makefile-variable-assignment幫助。 – FPK

+0

這不是變量賦值,我的問題是什麼是'WERROR',它與'CFLAGS'有什麼關係,NM指的是什麼? CC指代編譯器,LD指向鏈接器。 – DarthSpeedious

回答

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」的配方。

+0

這是什麼:'CFLAGSWERROR = -Werror -pedantic -std = c99 -Werror'呢? – DarthSpeedious

+0

您必須檢查編譯器參考的具體細節,但可能是 - 錯誤是告訴編譯器將警告視爲錯誤。 -pedantic說它是迂腐的,-std = c99告訴它編譯成c99標準,而額外的錯誤可能是一個錯誤。如果定義了這些標誌,則這些標誌將擴展到CFLAGSNO中,然後擴展到由make執行的默認編譯規則中使用的CFLAGS。 –