1. 程式人生 > >[makefile] 命令列給make直譯器傳引數

[makefile] 命令列給make直譯器傳引數

例如:

build:
[tab] mvn clean package

原本是這樣既可以跑 UT又可以打不jar 包來,但後來UT總是不過。怎麼避免對檔案的修改呢? 本著這樣目的,修改如下:
1 maven.test.skip = false

2 build:
3 [tab] mvn clean package -Dmaven.test.skip=$(maven.test.skip)

注意line 1的賦值,幾makefile的賦值語法與shell不同,key value不必緊緊地貼在=號兩側。

這樣是mvn 就有個預設值了。 還可以寫成:

1 build:
2 [tab] mvn clean package -Dmaven.test.skip=$(maven.test.skip)
即刪除預設值。 但呼叫的規則都是一樣的, 即:
make -f MakefileName maven.test.skip=true
這裡的,在命令列的賦值,key value,就必須像shell中給變數賦值一樣,不能有空格,否者shell就不認識他們了。

2 case:

    ifdef CONFIG_DEBUG_INFO  
    KBUILD_CFLAGS   += -g  
    KBUILD_AFLAGS   += -gdwarf-2  
    endif  

要想enable這部分功能, 需要
> make CONFIG_DEBUG_INFO=1

在命令列定義它。

可參見: http://blog.csdn.net/kangear/article/details/8583979