實際上是gcc命令支援-d巨集定義,相當於c中的全域性#define:
gcc -d name
gcc -d name=definition
makefile中可以定義變數(和巨集很像),但是是給make直譯器用的,對所編譯的檔案完全沒有作用。
mstar:巨集定義方式:字串定義方式和值定義方式
cc_tvopts += -dms_board_type_sel=$(board_type_sel)
cc_tvopts += -dms_sw_cus_sel=sw_config_trunk_atvmm
cc_tvopts += -denable_cape=0
cc_tvopts += -dms_sw_test=\"videocon.bin\"
cc_tvopts += -dms_sw_test=\"$\"
在makefile中我們可以通過巨集定義來控制源程式的編譯。只要在makefile中的cflags中通過選項-d來指定你於定義的巨集即可。
如:cflags += -d _yuqiang
在編譯的時候加上此選項就可以了: $(cc) $(cflags) $^ -o $@
下面是我寫的乙個測試檔案:
例如:
makefile檔案內容為:
main.c檔案的內容為:
hello yu qiang, how are you?
M 在Makefile中進行巨集定義 D
在源 裡面如果這樣是定義的 ifdef macroname 可選 endif 那在makefile裡面 gcc d macroname macrodef 或者gcc d macroname 這樣就定義了預處理巨集,編譯的時候可選 就會被編譯進去了。對於gcc編譯器,有如下選項 d macro str...
Makefile進行巨集定義
實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。在makefile中我們可以通過巨集定義來控制源程式的編譯。只要...
Makefile中用巨集定義進行條件編譯
在源 裡面如果這樣是定義的 ifdef macroname 可選 endif 那在makefile裡面 gcc d macroname macrodef 或者 gcc d macroname 這樣就定義了預處理巨集,編譯的時候可選 就會被編譯進去了。對於gcc編譯器,有如下選項 d macro st...