Makefile如何在中途定义变量?

发布于 2022-09-06 09:23:44 字数 1325 浏览 22 评论 0

首先说一下我是做Web开发的,对 C 和 Makefile 一窍不通。但是公司就是把打包的事情甩给我了,我也没办法。
原来的 Makefile 反正我是看不懂,我只是在最后打完RPM包的地方自己接了一个 Bash 脚本,之后在外部把剩下的事情搞定。
现在需求是这样的,需要根据入口打出两个不同的包出来,类似 make build-developmake 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

末蓝 2022-09-13 09:23:44
echo $(TARGETVERSION)
加上括号试试
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文