1. 程式人生 > >Makefile(或者shell)的變數通過gcc的-D巨集定義選項傳遞給C原始檔

Makefile(或者shell)的變數通過gcc的-D巨集定義選項傳遞給C原始檔

make巢狀呼叫時,上層Makefile中定義的變數會以系統環境變數的方式傳遞到下層的Makefile中。這裡的系統環境變數與本makefile中定義的變數的關係有點類似於全域性變數與區域性變數的關係。預設情況下,只有通過命令列設定的變數會被傳遞。而定義在檔案中的變數,如果要向下層Makefile傳遞,則需要使用exprot關鍵字來宣告。

------------------------------------------我是分割線------------------------------------------------------
在一些特別的場合需要把Makefile中定義的變數作為C原始碼的初始值. 比如__DATE__巨集是C已經預定義的巨集,但有時候不喜歡該巨集的日期格式,那麼可以自己做一個。 舉例如下: Makefile內容如下: ================================================= STR_A="Hello!" STR_B=$(shell
 date   --rfc-3339=date) all:      gcc   -DSTR_INFO=\"$(STR_A)\"     -DSTR_DATE=\"$(STR_B)\"    -o  test   main.c ---------------------------------------------------------------------------------------------------------- main.c 內容如下: ================================================================== #include    <stdlib.h> #include    <string.h> #include    <stdio.h> const char  info[]=STR_INFO
;         //這裡的巨集定義來自Makefile const char  data[]=STR_DATE;      // 這裡的巨集定義來自Makefile void  main(void) {           printf("%s\n", info);           printf("%s\n", date); }