Makefile如何在中途定义变量?
首先说一下我是做Web开发的,对 C 和 Makefile 一窍不通。但是公司就是把打包的事情甩给我了,我也没办法。
原来的 Makefile 反正我是看不懂,我只是在最后打完RPM包的地方自己接了一个 Bash 脚本,之后在外部把剩下的事情搞定。
现在需求是这样的,需要根据入口打出两个不同的包出来,类似 make build-develop
和 make build-release
。反正我不想多动原来的代码,于是:
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 //后加的
总之就是想增加个变量 $TARGETVERSION
,在整个 Makefile 完成的末尾,把这个参数传到我自己写的 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
...
所以请教下这里该如何做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)