有時候,我們還是需要讓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
此時,如果想開啟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編譯不同的模組。
有時候,我們還是需要讓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編譯不同的模組。