我有这个简短的makefile。 UNAME来自uname命令,但出于示例的目的,它只是硬编码。我想检查一下,如果UNAME以字符串“MINGW32_NT”开头,那么内部代码应该执行。
UNAME := Linux # MINGW32_NT-6.1
ifneq ( $(findstr MINGW32_NT, $(UNAME)) , "" )
UNAME := MINGW32
endif
info:
@echo Compiling for "$(UNAME)"
编辑:问题是引号和空格。 ; - )
ifneq ($(findstring MINGW32_NT, $(UNAME)),)
答案 0 :(得分:1)
假设您正在使用GNU make,该函数应为findstring
。
此外,Makefile
中的字符串和空格规则有点严格。以下作品:
UNAME := Linux # MINGW32_NT-6.1
ifneq ($(findstring MINGW32_NT,$(UNAME)),)
UNAME := MINGW32
endif
info:
@echo Compiling for "$(UNAME)"
(请注意,我删除了ifneq
测试中的所有虚假空格。)