Makefile ifeq 논리적 또는
make ifeq
연산자를 사용하여 논리 OR을 어떻게 수행 합니까?
예를 들어, (간체) :
ifeq ($(GCC_MINOR), 4)
CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 5)
CFLAGS += -fno-strict-overflow
endif
그러나 이러한 라인을 통합하고 싶습니다.
(예, 예, autotools, 구성 등; 현재 상황에 비해 너무 무거워서 여기에서 Makefile 내의 모든 것을 유지하고 싶습니다)
[이 질문의 논리적 반대 : 'ifeq'문에서 다중 조건을 사용하는 방법 ]
메일 링리스트 아카이브에서 볼 수 있듯이
- http://osdir.com/ml/gnu.make.windows/2004-03/msg00063.html
- http://osdir.com/ml/gnu.make.general/2005-10/msg00064.html
필터 기능을 사용할 수 있습니다 .
예를 들면
ifeq ($(GCC_MINOR),$(filter $(GCC_MINOR),4 5))
필터 X, AB 는 X와 동일한 A, B의 항목을 반환합니다.
이것의 변형은
ifneq (,$(filter $(GCC_MINOR),4 5))
대신 빈 문자열에 대한 음의 비교가 사용됩니다 ( GCC_MINOR이 인수와 일치하지 않으면 필터 는 빈 문자열을 반환합니다).
이러한 메서드의 단점은 인수가 단일 단어 여야한다는 것입니다.
다른 변수를 도입 할 수 있습니다. 두 수표를 모두 통합하지는 않지만 적어도 본문을 두 번 넣을 필요가 없습니다.
do_it =
ifeq ($(GCC_MINOR), 4)
do_it = yes
endif
ifeq ($(GCC_MINOR), 5)
do_it = yes
endif
ifdef do_it
CFLAGS += -fno-strict-overflow
endif
간결하고 현명한 방법이 있다고 생각하지 않지만 장황하고 현명한 방법 (예 : Foo Bah 's)과 간결하고 병리적인 방법이 있습니다.
ifneq (,$(findstring $(GCC_MINOR),4-5))
CFLAGS += -fno-strict-overflow
endif
(문자열 $ (GCC_MINOR)이 문자열 4-5 안에 나타나면 명령을 실행합니다).
더 유연한 변형 : 외부 셸을 사용하지만 임의의 조건을 확인할 수 있습니다.
ifeq ($(shell test ".$(GCC_MINOR)" = .4 -o \
".$(GCC_MINOR)" = .5 -o \
".$(TODAY)" = .Friday && printf "true"), true)
CFLAGS += -fno-strict-overflow
endif
ifeq ($(GCC_MINOR), 4) CFLAGS += -fno-strict-overflow endif ifeq ($(GCC_MINOR), 5) CFLAGS += -fno-strict-overflow endif
이 경우 사용할 수있는 또 다른 방법은 다음과 같습니다.
GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version (4.[2-9]|[5-9])")
# -Wstrict-overflow: http://www.airs.com/blog/archives/120
ifeq ($(GCC42_OR_LATER),1)
CFLAGS += -Wstrict-overflow
endif
I actually use the same in my code because I don't want to maintain a separate config
or Configure
.
But you have to use a portable, non-anemic make
, like GNU make (gmake
), and not Posix's make
.
And it does not address the issue of logical AND
and OR
.
참고URL : https://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
'developer tip' 카테고리의 다른 글
Rails 4에서 컨트롤러 또는 액션에 대한 X-Frame-Options를 재정의하는 방법 (0) | 2020.09.22 |
---|---|
배열에서 스트리밍 할 때 정수를 문자열에 매핑 할 수없는 이유는 무엇입니까? (0) | 2020.09.22 |
mkdir의 "-p"옵션 (0) | 2020.09.22 |
github markdown colspan (0) | 2020.09.22 |
플로팅 라벨 스피너? (0) | 2020.09.22 |