歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> 系統編譯:如何給Make命令來傳遞參數

系統編譯:如何給Make命令來傳遞參數

日期:2017/3/2 14:48:24   编辑:Linux基礎知識

在編譯系統的時候,我們一般只要簡單的輸入make執行就可以了。但有時候,我們還是需要讓make命令帶入一些參數給makefile腳本。

比如,你在代碼裡面需要定義一個宏DEBUG來打開調試開關,代碼如下:

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命令傳遞參數來進行,為此,我們需要適當的修改makefile如下:

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]$

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

更進一步的,我們可以通過傳遞不同的參數給make,讓make編譯不同的模塊。

Copyright © Linux教程網 All Rights Reserved