makefile變數定義應用到c語言

2022-06-21 06:54:10 字數 914 閱讀 4892

makefile是為組織程式工程的,其定義的巨集怎樣應用到c程式中呢?

我們知道makefile中可定義變數或匯出變數,make命令可定義變數;編譯器(如gcc)可通過cflags定義巨集。

但如何才能使makefile或make命令用變數控制c程式呢?

c程式可以接收編譯器定義的巨集,通過-d指定。makefile中將make命令或makefile中變數通過編譯器-d引數傳遞到c程式是關鍵。

巨集定義使用字首-d,在編譯過程中可以把巨集定義追加到cflag中。巨集定義有兩種相似的寫法

【第一種】-d defines

【第二種】-d defines=condition

注:可以在c語言中直接使用巨集定義,如同c檔案開始#define定義一樣,但要注意變數定義格式(字串要用引號)。

如判斷soc是ti則c程式執行特殊動作(soc_ti),流程如下:

1. make命令執行時,定義soc=ti。

make soc=ti

2. makefile中判斷soc變數。

ifeq ( "$soc", "ti")

soc_flag = -dsoc_ti

endif

3. cflags增加巨集

cflags += $(soc_flag)

foo:foo.o bar.o

cc -o foo foo.o bar.o $(cflags) $(ldflags)

4. 在c程式中增加巨集判斷

#ifdef soc_ti

todo...

#endif

通過上述過程soc=ti變數定義就傳導到c程式中。

參考:1. makefile中用巨集定義進行條件編譯(gcc -d)/在makefile中進行巨集定義-d

2.linux學習筆記——例說makefile 增加巨集定義

匯出iPhone應用到iTunes

重新安裝了itunes,沒備份,發現itunes裡的應用都沒了,再同步ipad和iphone的時候,提示我要清空ipad和iphone裡的資料,嚇得我趕緊取消了。於是上網找了一下如何將ipad和iphone的應用同步回電腦的方法。最終找到了,方法非常簡單,在itunes中連線ipad和iphone後...

SAP 應用到的Tcode

se38 abap編輯器 se75 建立長文物件以及呼叫建立的物件 se11 自定義表並維護 se16n 對資料表進行編輯與檢視 se80 物件瀏覽器 se91 建立訊息類 se93 建立事務碼 se37 維護function module se09 傳輸組織器 se41 選單製作器 qaer 上傳...

部署Angular應用到Github pages

published august 08,2017 by jeneser categories angular 1 tags angular 2 course 2 original 4 你將看到 快速部署angular應用到github pages,利用github提供的pages資源快速建立演示站點...