我在执行linux工具时有一个makefile规则.我需要检查工具命令的退出状态,如果该命令失败,则必须中止make.
我试过用$ ?, $$来检查?\ $?makefile中的etc等.但是当makefile运行时,它们会给我语法错误.
这样做的正确方法是什么?
这是Makefile中的相关规则
Run Code Online (Sandbox Code Playgroud)mycommand \ if [ $$? -ne 0 ]; \ then \ echo "mycommand failed"; \ false; \ fi
我有一个Makefile,它在应用构建规则之前运行工具开始(这个工具为我写的).如果这个工具是一个python脚本,以非空状态代码退出,我希望GNU Make在那里停止,而不是继续构建程序.
目前,我做这样的事情(顶级,即第1列):
$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk
Run Code Online (Sandbox Code Playgroud)
但是如果collect_sources.py退出时状态代码为1,则不会停止make .这也会捕获标准输出collect_sources.py但不打印出来,所以我感觉我看错了方向.
如果可能的话,解决方案甚至应该在简单的MS-DOS shell是标准系统shell时工作.
有什么建议吗?
什么是"$$?" 在下面的Makefile片段中是什么意思?
$(PROGS): FORCE
@cd $(BUILD_DIRECTORY_PATH)/$@; \
mkdir -p obj; \
$(MAKE) || exit "$$?"; \ <====== HERE
Run Code Online (Sandbox Code Playgroud)
我想这意味着exit "$?"在bash中,因为$$在makefile中转义为$.
但那 exit "$?"意味着什么呢?