Makefile-지시어

다양한 형태로 사용할 수있는 수많은 지침이 있습니다. 그만큼make시스템의 프로그램이 모든 지시문을 지원하지 않을 수 있습니다. 따라서 귀하의make 여기서 설명하는 지침을 지원합니다. GNU make 이러한 지시문을 지원합니다.

조건부 지시문

조건부 지시문은-

  • 그만큼 ifeq지시문은 조건을 시작하고 조건을 지정합니다. 여기에는 쉼표로 구분되고 괄호로 묶인 두 개의 인수가 포함됩니다. 변수 대체는 두 인수 모두에서 수행 된 다음 비교됩니다. 두 인수가 일치하면 ifeq 다음의 makefile 행이 준수됩니다. 그렇지 않으면 무시됩니다.

  • 그만큼 ifneq지시문은 조건을 시작하고 조건을 지정합니다. 여기에는 쉼표로 구분되고 괄호로 묶인 두 개의 인수가 포함됩니다. 변수 대체는 두 인수 모두에서 수행 된 다음 비교됩니다. ifneq 다음의 makefile 행은 두 인수가 일치하지 않으면 준수됩니다. 그렇지 않으면 무시됩니다.

  • 그만큼 ifdef지시문은 조건을 시작하고 조건을 지정합니다. 단일 인수를 포함합니다. 주어진 인수가 참이면 조건은 참이됩니다.

  • 그만큼 ifndef지시문은 조건을 시작하고 조건을 지정합니다. 단일 인수를 포함합니다. 주어진 인수가 거짓이면 조건은 참이됩니다.

  • 그만큼 else지시문은 이전 조건이 실패한 경우 다음 행을 따르도록합니다. 위의 예에서 이것은 첫 번째 대안이 사용되지 않을 때마다 두 번째 대안 연결 명령이 사용됨을 의미합니다. 조건부에서 else를 갖는 것은 선택 사항입니다.

  • 그만큼 endif지시문은 조건부를 종료합니다. 모든 조건문은 endif로 끝나야합니다.

조건부 지시문의 구문

다른 조건이없는 간단한 조건 문의 구문은 다음과 같습니다.

conditional-directive
   text-if-true
endif

text-if-true는 조건이 참인 경우 메이크 파일의 일부로 간주되는 텍스트 행일 수 있습니다. 조건이 거짓이면 대신 텍스트가 사용되지 않습니다.

복잡한 조건 문의 구문은 다음과 같습니다.

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

조건이 참이면 text-if-true가 사용됩니다. 그렇지 않으면 text-if-false가 사용됩니다. text-if-false는 여러 줄의 텍스트 일 ​​수 있습니다.

조건 지시문의 구문은 조건문이 단순하든 복잡하든 동일합니다. 다양한 조건을 테스트하는 네 가지 지시문이 있습니다. 그들은 주어진대로-

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"

조건부 지시문의 예

libs_for_gcc = -lgnu
normal_libs =

foo: $(objects)
ifeq ($(CC),gcc)
   $(CC) -o foo $(objects) $(libs_for_gcc)
else
   $(CC) -o foo $(objects) $(normal_libs)
endif

포함 지시문

그만큼 include directive 허용 make계속하기 전에 현재 메이크 파일 읽기를 중단하고 하나 이상의 다른 메이크 파일을 읽습니다. 지시문은 다음과 같은 makefile의 한 줄입니다.

include filenames...

파일 이름은 쉘 파일 이름 패턴을 포함 할 수 있습니다. 줄의 시작 부분에 추가 공백이 허용되고 무시되지만 탭은 허용되지 않습니다. 예를 들어, 세 개의`.mk '파일, 즉`a.mk',`b.mk ',`c.mk', $ (bar)가있는 경우 bish bash로 확장되고 다음과 같이 확장됩니다. 표현.

include foo *.mk $(bar)

is equivalent to:

include foo a.mk b.mk c.mk bish bash

makeinclude 지시문을 처리하고 makefile 읽기를 일시 중지하고 나열된 각 파일에서 차례로 읽습니다. 완료되면make 지시문이 나타나는 메이크 파일 읽기를 다시 시작합니다.

재정의 지시문

변수가 명령 인수로 설정된 경우 메이크 파일의 일반적인 할당은 무시됩니다. makefile에서 명령 인수로 설정 했음에도 변수를 설정하려면 다음과 같은 라인 인 override 지시문을 사용할 수 있습니다.

override variable = value

or

override variable := value