相关疑难解决方法(0)

如何使失败的$(shell)命令中断Make

我有一个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时工作.

有什么建议吗?

shell makefile

20
推荐指数
3
解决办法
6505
查看次数

使用 shell 函数时缺少分隔符?

我正在开发 Solaris 11,已打完补丁。我试图通过在 ISA 下转储预处理器宏来确定编译器是否支持 ISA。

Make 由于Missing Separator. Missing Separator当与 GNU make 的shell 函数一起使用时,我无法找到有关错误的信息。

这是简化的情况。没有空格,因此它不是像“ Make error:缺少分隔符和朋友”中那样的空格/制表符问题。

$ cat -n GNUmakefile-test
 1  EGREP ?= egrep
 2  SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: (Sun|Studio)")
 3
 4  # Begin SunCC
 5  ifeq ($(SUN_COMPILER),1)
 6  $(info "Sun compiler")
 7  $(shell $(CXX) $(CXXFLAGS) -E -xarch=ssse3 -xdumpmacros /dev/null 2>/dev/null)
 8  ifeq ($(.SHELLSTATUS),0)
 9  $(info "SSSE3")
10  SSSE3_FLAG = -xarch=ssse3 -D__SSSE3__=1
11  endif
12 …
Run Code Online (Sandbox Code Playgroud)

shell solaris makefile gnu-make sunstudio

1
推荐指数
1
解决办法
1679
查看次数

标签 统计

makefile ×2

shell ×2

gnu-make ×1

solaris ×1

sunstudio ×1