IT TIP

Makefile If-Then Else 및 루프

itqueen 2020. 12. 30. 19:57
반응형

Makefile If-Then Else 및 루프


누군가 Makefile에서 if-then 문과 for 루프를 사용하는 방법을 설명 할 수 있습니까? 예제가있는 좋은 문서를 찾을 수없는 것 같습니다.


조건부 양식

단순한

conditional-directive
text-if-true
endif

다소 복잡함

conditional-directive
text-if-true
else
text-if-false
endif

더 복잡한

conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif

조건부 지시문

같으면 구문

ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"

같지 않은 경우 구문

ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"

정의 된 구문

ifdef variable-name

정의되지 않은 경우 구문

ifndef variable-name  

foreach 기능

foreach 함수 구문

$(foreach var, list, text)  

foreach 의미론
"list"에서 공백으로 구분 된 각 단어에 대해 "var"로 명명 된 변수가 해당 단어로 설정되고 텍스트가 실행됩니다.


다음과 같은 경우의 예가 있습니다.

ifeq ($(strip $(OS)),Linux)
        PYTHON = /usr/bin/python
        FIND = /usr/bin/find
endif

이것은 Make의 다른 버전이 약간 다른 구문을 가지고 있다는 경고의 한마디와 함께 제공되며 어느 것도 잘 문서화되지 않은 것 같습니다.


GNU make 문서 를 사용해 보셨습니까 ? 예제와 함께 조건문에 대한 전체 섹션이 있습니다.


You do see for loops alot of the time, but they are usually not needed. Here is an example of how one might perform a for loop without resorting to the shell

LIST_OF_THINGS_TO_DO = do_this do_that 
$(LIST_OF_THINGS_TO_DO): 
       run $@ > $@.out

SUBDIRS = snafu fubar
$(SUBDIRS):
     cd $@ && $(MAKE)

ReferenceURL : https://stackoverflow.com/questions/180760/makefile-if-then-else-and-loops

반응형