내 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),)
...