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