回覆列表
  • 1 # 使用者1208090662578

    有時候,我們還是需要讓make命令帶入一些引數給makefile指令碼。

    比如,你在程式碼裡面需要定義一個宏DEBUG來開啟除錯開關,程式碼如下:int main(){int i=9;#ifdef DEBUGi=1;#elsei=0;#endifprintf("i=%d\n", i);return 0;}一般來說,這個宏定義可以透過直接修改原始碼進行,但這樣顯然不是很好的辦法。另外一個辦法是透過makefile修改,比如:

    CFLAGS=-g -Wall -DDEBUG

    object=myprog

    all:$objectmyprog:a.c

    gcc ${CFLAGS} a.c -o ${object}

    如果更進一步,連makefile都不想修改,我們可以透過向make命令傳遞引數來進行,為此,我們需要適當的修改makefile如下:

    CFLAGS=CFLAG

    CFLAGS+=-g -Wall -DDEBUG

    object=myprog

    all:$objectmyprog:a.c

    gcc ${CFLAGS} a.c -o ${object}

    此時,如果想開啟DEBUG宏,我們可以這樣輸入make命令:

    [ychq@ICM3-2 net]$ make CFLAG=-DDEBUG

    gcc -g -Wall -DDEBUG a.c

    a.c: In function `main":

    a.c:9: warning: implicit declaration of function `printf" [ychq@ICM3-2 net]$

    我們可以發現,DEBUG宏已經被正確的傳入。

    更進一步的,我們可以透過傳遞不同的引數給make,讓make編譯不同的模組。

  • 中秋節和大豐收的關聯?
  • 簕杜鵑花語?