在編譯系統(tǒng)的時候,我們一般只要簡單的輸入make執(zhí)行就可以了。但有時候,我們還是需要讓make命令帶入一些參數(shù)給makefile腳本。
比如,你在代碼里面需要定義一個宏DEBUG來打開調(diào)試開關(guān),代碼如下:
int main()
{
int i=9;
#ifdef DEBUG
i=1;
#else
i=0;
#endif
PRintf("i=%d/n", i);
return 0;
}
一般來說,這個宏定義可以通過直接修改源代碼進行,但這樣顯然不是很好的辦法。另外一個辦法是通過makefile修改,比如:
CFLAGS=-g -Wall -DDEBUG
object=myprog
all:$object
myprog:a.c
gcc ${CFLAGS} a.c -o ${object}
如果更進一步,連makefile都不想修改,我們可以通過向make命令傳遞參數(shù)來進行,為此,我們需要適當?shù)男薷膍akefile如下:
CFLAGS=CFLAG
CFLAGS+=-g -Wall -DDEBUG
object=myprog
all:$object
myprog: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]$
我們可以發(fā)現(xiàn),DEBUG宏已經(jīng)被正確的傳入。
更進一步的,我們可以通過傳遞不同的參數(shù)給make,讓make編譯不同的模塊。
新聞熱點
疑難解答