鍍金池/ 問答/C  網(wǎng)絡(luò)安全/ Makefile如何在中途定義變量?

Makefile如何在中途定義變量?

首先說一下我是做Web開發(fā)的,對 C 和 Makefile 一竅不通。但是公司就是把打包的事情甩給我了,我也沒辦法。
原來的 Makefile 反正我是看不懂,我只是在最后打完RPM包的地方自己接了一個(gè) Bash 腳本,之后在外部把剩下的事情搞定。
現(xiàn)在需求是這樣的,需要根據(jù)入口打出兩個(gè)不同的包出來,類似 make build-developmake build-release。反正我不想多動(dòng)原來的代碼,于是:

build-release: _init _try_inc_release_num _build

build-develop: _init2 _try_inc_release_num _build

之后:

_init: $(saved_branch) $(saved_version) $(saved_release_num) $(saved_release_detail)
    TARGETVERSION='RELEASE' //后加的,但是不好用
    echo $TARGETVERSION //后加的,但是不好用
    find . -name *.sh |xargs chmod a+x //后加的

_init2: $(saved_branch) $(saved_version) $(saved_release_num) $(saved_release_detail)
    TARGETVERSION='DEVELOP' //后加的,但是不好用
    echo $TARGETVERSION //后加的,但是不好用
    find . -name *.sh |xargs chmod a+x //后加的

總之就是想增加個(gè)變量 $TARGETVERSION ,在整個(gè) Makefile 完成的末尾,把這個(gè)參數(shù)傳到我自己寫的 Bash 中就行了。

問題是這種寫法在 sh 或 bash 中都 OK。

[root@localhost html]# cat test.sh
#!/bin/sh
#set -euo pipefail
TARGETVERSION='RELEASE'
echo $TARGETVERSION
[root@localhost html]# ./test.sh 
RELEASE
[root@localhost html]# 

但是在 Makefile 里不能用。

[root@localhost builder]# make build-release

...
TARGETVERSION='RELEASE'
echo ARGETVERSION
ARGETVERSION
...

所以請教下這里該如何做?

回答
編輯回答
真難過
echo $(TARGETVERSION)
加上括號試試
2017年11月4日 03:17