我的 Makefile 中有这些行:
PLATFORM = $(shell uname -r)
OLD_FREEBSD = 7.3-RELEASE-p2
ifeq ($(OLD_FREEBSD), $(findstring $(OLD_FREEBSD),$(PLATFORM)))
...
do some stuff
...
else
...
do some other stuff
...
endif
这按预期工作。但我发现,一些 FreeBSD 7.3 映像将命令“uname -r”的输出显示为 7.2-RELEASE-p2。我不知道为什么它会这样,但我应该介绍这个变体。另外,这个 Makefile(使用 gmake 运行)应该对较新的 FreeBSD 和 CentOS 有效。那么,验证操作系统是 7.3 还是 7.2 的最佳方法是什么?
答案1
您可以将一个字符串(一个单词)与其他几个字符串进行比较筛选,它返回任何与该单词匹配的内容。例如,
...
OLDER_FREEBSD = 7.2-RELEASE-p2
M = $(filter $(PLATFORM),$(OLD_FREEBSD) $(OLDER_FREEBSD))
ifneq ($(M),)
...