私の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),)
...