Mar*_*ski 17 netbeans makefile
我使用由外部工具(Netbeans)生成的Makefile,我无法更改主目标的逻辑,但我能够在实际构建之前执行的目标中"注入"逻辑(.build-pre)在Netbeans生成的Makefile中具体说明)
我希望该目标有条件地终止make执行,但不会引发错误.如果我做
exit
Run Code Online (Sandbox Code Playgroud)
在"预"规则中,没有任何反应(我的意思是,规则终止,但继续).如果我加
exit 1
Run Code Online (Sandbox Code Playgroud)
make将终止,但它将返回错误状态.
有没有办法强制make以干净的方式退出?我搜索了make函数,但发现只有error/warn/info,但没有像exit一样.
提前致谢!
编辑:基于评论似乎不可能.可怜.
为了完整性,我想要实现的更具体的例子:
default: pre
@echo "Doing default"
pre:
@echo "Doing pre"
ifeq "$(SOME_VARIABLE)" "yes"
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
使用上面的Makefile,我希望能够执行pre,并有条件地阻止'default'执行,但仍然返回0到shell.
小智 18
如果未设置变量,则可以让所有目标无效:
ifeq ($(SOME_VAR),)
$(info SOME_VAR not set!)
all:
else
all: target1 target2 targetetc
endif
Run Code Online (Sandbox Code Playgroud)
您所看到的情况是因为配方中的每一行都在其自己的 shell 中运行。
您可以使用.ONESHELL,以便所有命令在同一个 shell 中运行。这样,“退出”就起作用了:
.ONESHELL:
sayhi:
@echo Hi
exit
@echo "I won't be printed"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23644 次 |
| 最近记录: |