영어프랑스어스페인어

Ad


온웍스 파비콘

makeposix - 클라우드 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 공급자에서 makeposix 실행

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 makeposix 명령입니다.

프로그램:

이름


make — 프로그램 그룹을 유지 관리, 업데이트 및 재생성합니다(개발)

개요


확인 [-einpqrst] [-f 메이크 파일]... [-k|-S] [매크로=가치...]
[대상_이름...]

기술


XNUMXD덴탈의 확인 유틸리티는 다른 파일에서 파생된 파일을 업데이트합니다. 대표적인 경우는
하나는 객체 파일이 해당 소스 파일에서 파생되는 것입니다. 그만큼 확인 유틸리티
시간 관계를 검사하고 해당 파생 파일(대상이라고 함)을 업데이트해야 합니다.
파일의 수정 시간보다 이전에 수정 시간이 있음(필수 조건이라고 함)
그것들이 파생됩니다. 설명 파일(makefile)에는
파일 간의 관계 및 파일을 업데이트하기 위해 실행해야 하는 명령
전제 조건의 변경 사항을 반영하는 대상. 각 사양 또는 규칙은
대상, 선택적 전제 조건 및 실행될 때 실행할 선택적 명령으로 구성됩니다.
전제 조건이 대상보다 최신입니다. 규칙에는 두 가지 유형이 있습니다.

1. 추론 규칙, 적어도 하나의 대상 이름을 가진 하나의 ('.') 아니오
('/')

2. 목표 규칙, 둘 이상의 대상 이름을 가질 수 있음

또한, 확인 내장된 매크로 및 추론 규칙 모음이 있어야 합니다.
프로그램 유지 관리를 단순화하기 위해 전제 조건 관계를 추론합니다.

이 섹션에 설명된 동작을 정확하게 수신하려면 사용자는 다음을 확인해야 합니다.
휴대용 메이크파일은 다음을 수행해야 합니다.

* 특수 대상 포함 .POSIX

* 구현을 위해 예약된 특별한 목표는 생략하십시오(선두 기간 뒤에
대문자) 이 섹션에서 지정하지 않은

행동 확인 이러한 조건 중 하나 또는 둘 모두가 충족되지 않으면 지정되지 않습니다.

옵션


XNUMXD덴탈의 확인 유틸리티는 POSIX.1-2008의 기본 정의 볼륨을 준수해야 합니다. 섹션
12.2, 유틸리티 통사론 가이드 라인, 지침 9를 제외하고.

다음 옵션이 지원됩니다.

-e null 값을 포함하는 환경 변수가 매크로를 재정의하도록 합니다.
makefile 내의 할당.

-f 메이크 파일
다른 메이크파일을 지정하십시오. 논쟁 거리 메이크 파일 의 경로 이름입니다.
설명 파일이라고도 합니다. 메이크 파일. 경로 이름 '-'
표준 입력을 나타냅니다. 이 옵션에는 여러 인스턴스가 있을 수 있습니다.
지정된 순서대로 처리됩니다. 지정의 효과
동일한 옵션 인수가 두 번 이상 지정되지 않았습니다.

-나 호출된 명령에서 반환된 오류 코드를 무시합니다. 이 모드는 다음과 동일합니다.
특수 대상 .무시하다 조건 없이 지정되었습니다.

-k 다음과 같은 경우 현재 대상에 종속되지 않는 다른 대상을 계속 업데이트합니다.
대상을 최신 상태로 만드는 명령을 실행하는 동안 무시되지 않는 오류가 발생합니다.
날짜입니다.

-n 표준 출력에서 ​​실행되지만 실행되지 않는 명령을 작성합니다.
그들을. 그러나 ('+') 접두사가 실행됩니다. 이에
모드, at 기호('@') 문자 접두사를 표준으로 작성합니다.
출력.

-p 매크로 정의 및 대상의 전체 세트를 표준 출력에 기록합니다.
설명. 출력 형식이 지정되지 않았습니다.

-q 대상 파일이 최신이면 종료값 XNUMX을 반환합니다. 그렇지 않으면
종료 값 1. 이 옵션을 지정하면 대상이 업데이트되지 않습니다.
그러나 makefile 명령줄(대상과 연결됨)은
기호> ('+') 접두사가 실행됩니다.

-r 접미사 목록을 지우고 기본 제공 규칙을 사용하지 마십시오.

-S 끝내다 확인 대상을 가져오는 명령을 실행하는 동안 오류가 발생하는 경우
최신 정보. 이것은 기본값이며 다음과 반대입니다. -k.

-s 메이크파일 명령줄을 작성하거나 메시지를 건드리지 마십시오. -t) 기준으로
실행 전 출력. 이 모드는 특수 대상과 동일합니다.
.조용한 조건 없이 지정되었습니다.

-t 각 대상의 수정 시간을 업데이트하는 것처럼 터치 목표 있었다
실행. 전제 조건이 있지만 명령이 없는 대상(참조 목표 규칙), 또는
이미 최신 상태인 경우 이러한 방식으로 건드리면 안 됩니다. 쓰다
파일의 이름을 나타내는 각 대상 파일에 대한 표준 출력 메시지
그리고 만졌다는 것. 일반적으로 메이크 파일 관련된 명령줄
각 대상은 실행되지 않습니다. 그러나 ('+')
접두사가 실행됩니다.

에 지정된 모든 옵션 메이크플래그 환경 변수는
에 지정된 옵션 확인 유틸리티 명령줄. 만약 -k-S 옵션은 둘 다
에 지정된 확인 유틸리티 명령줄 또는 메이크플래그 환경 변수,
지정된 마지막 옵션이 우선합니다. 만약 -f or -p 옵션은
메이크플래그 환경 변수, 결과는 정의되지 않습니다.

피연산자


다음 피연산자가 지원됩니다.

대상_이름
EXTENDED DESCRIPTION 섹션에 정의된 대상 이름입니다. 대상이 없다면
지정된 동안 확인 메이크파일을 처리하는 중입니다. 확인
특별한 대상이 아닌 조우 또는 추론 규칙을 사용해야 합니다.

매크로=가치
에 정의된 매크로 정의 매크로.

경우 대상_이름매크로=가치 피연산자는 확인 유틸리티 명령
결과가 지정되지 않았습니다.

STDIN


표준 입력은 다음과 같은 경우에만 사용됩니다. 메이크 파일 옵션 인수는 '-'. 를 참조하십시오
입력 파일 섹션.

입력 파일


makefile이라고도 하는 입력 파일은 규칙, 매크로를 포함하는 텍스트 파일입니다.
정의 및 주석. 확장 설명 섹션을 참조하십시오.

환경 변수


다음 환경 변수는 실행에 영향을 미칩니다. 확인:

설정되지 않은 국제화 변수에 대한 기본값을 제공하거나
없는. (POSIX.1-2008의 기본 정의 볼륨을 참조하십시오. 섹션 8.2,
국제화 변수 국제화를 위해
로케일 범주의 값을 결정하는 데 사용되는 변수)

LC_ALL 비어 있지 않은 문자열 값으로 설정된 경우 다른 모든 값을 재정의합니다.
국제화 변수.

LC_CTYPE 텍스트 데이터의 바이트 시퀀스 해석을 위한 로케일 결정
문자로(예: 다중 바이트 문자가 아닌 단일 바이트
인수 및 입력 파일).

LC_메시지
의 형식과 내용에 영향을 주는 데 사용해야 하는 로케일을 결정합니다.
표준 오류에 기록된 진단 메시지.

메이크플래그
이 변수는 시리즈를 나타내는 문자열로 해석됩니다.
기본 옵션으로 사용할 옵션 문자 수. 구현은
다음 형식을 모두 허용합니다(혼합된 경우 허용하지 않아도 됨).

* 문자는 선행 문자가 없는 옵션 문자입니다. 문자 또는
에 사용되는 분리 확인 유틸리티 명령줄.

* 문자는 일부와 유사한 방식으로 서식이 지정됩니다. 확인
유틸리티 명령줄: 옵션 앞에 캐릭터와
- 기본 정의 볼륨에 설명된 대로 분리
POSIX.1-2008, 섹션 12.2, 유틸리티 통사론 가이드 라인. 그만큼 매크로=가치
매크로 정의 피연산자도 포함될 수 있습니다. 차이점
내용 메이크플래그 그리고 확인 유틸리티 명령줄은 내용이
변수의 단어 확장이 적용되지 않아야 합니다(참조 섹션
2.6, 워드 확장) 명령줄 값 구문 분석과 연결됩니다.

NLS경로 처리를 위한 메시지 카탈로그의 위치를 ​​결정합니다. LC_메시지.

프로젝트디렉토리
현재 폴더에서 찾을 수 없는 SCCS 파일을 검색하는 데 사용할 디렉토리를 제공하십시오.
예배 규칙서. 다음의 모든 경우에 SCCS 파일 검색은
디렉토리 SCCS 식별된 디렉토리에서. 값이 프로젝트디렉토리
로 시작 , 절대 경로 이름으로 간주됩니다. 그렇지 않으면,
의 값 프로젝트디렉토리 사용자 이름으로 취급되며 해당 사용자의 이니셜
작업 디렉토리는 하위 디렉토리에 대해 검사되어야 합니다. SRC or . 그러한 경우
디렉토리가 발견되면 사용됩니다. 그렇지 않으면 값이 상대 값으로 사용됩니다.
경로명.

If 프로젝트디렉토리 설정되지 않았거나 null 값이 있는 경우 SCCS 파일 검색은
디렉토리에서 만든 SCCS 현재 디렉토리에서.

설정 프로젝트디렉토리 이 파일의 나머지 부분에 나열된 모든 파일에 영향을 줍니다.
이름이 지정된 구성 요소가 있는 파일에 대한 유틸리티 설명 SCCS.

의 가치 SHELL 환경 변수는 매크로로 사용되어서는 안되며
정의하여 수정 SHELL 메이크파일 또는 명령줄의 매크로. 그 외 모든 것들
null 값을 포함하는 환경 변수는 다음과 같이 매크로로 사용됩니다.
정의 매크로.

비동기 이벤트


아직 무시하지 않았다면 확인 SIGHUP, SIGTERM, SIGINT 및 SIGQUIT를 트랩하고 제거합니다.
대상이 디렉터리이거나 대상이 다음의 전제 조건이 아닌 한 현재 대상
특수 대상 .귀중한 또는 다음 중 하나가 아닌 한 -n, -p-q 옵션이 지정되었습니다. 어느
이러한 방식으로 제거된 대상은 지정되지 않은 진단 메시지에 보고됩니다.
표준 오류에 기록된 형식입니다. 이 정리 프로세스 후(있는 경우) 확인 걸릴 것이다
다른 모든 신호에 대한 표준 동작.

표준 출력


XNUMXD덴탈의 확인 유틸리티는 실행될 모든 명령을 표준 출력에 기록해야 합니다. -s
옵션이 지정되었거나 명령에 at 기호가 접두사로 붙거나 특수 대상
.조용한 전제 조건으로 현재 대상이 있거나 전제 조건이 없습니다. 만약에 확인
수행할 작업 없이 호출되면 표준에 메시지를 작성합니다.
아무 조치도 취하지 않았음을 나타내는 출력. 만약 -t 옵션이 있고 파일이
감동, 확인 지정되지 않은 형식의 메시지를 표준 출력에 기록해야 합니다.
파일의 파일 이름을 포함하여 파일이 터치되었음을 나타냅니다.

STDERR


표준 오류는 진단 메시지에만 사용해야 합니다.

출력 파일


파일은 다음과 같은 경우에 생성될 수 있습니다. -t 옵션이 있습니다. 추가 파일도 생성 가능
다음에 의해 호출되는 유틸리티에 의해 확인.

확장 기술


XNUMXD덴탈의 확인 유틸리티는 지정된 작업을 수행하는 데 필요한 작업을 시도합니다.
대상이 최신입니다. 대상이 대상보다 오래된 경우 오래된 것으로 간주됩니다.
전제 조건 또는 존재하지 않는 경우. 그만큼 확인 유틸리티는 모든 전제 조건을 다음과 같이 취급합니다.
대상 자체를 재귀적으로 확인하여 최신 상태인지 확인하고
규칙에 나타나는 순서입니다. 그만큼 확인 유틸리티는 수정 시간을 사용합니다
해당 대상이 오래되었는지 여부를 확인하기 위해 파일 수.

확인 대상의 모든 전제 조건이 최신 상태인지 확인하고
대상이 오래된 경우 대상 항목과 관련된 명령이 실행됩니다. 만약에
대상에 대해 나열된 명령이 없으면 대상은 최신 상태로 취급됩니다.

Makefile 통사론
makefile은 규칙, 매크로 정의를 포함할 수 있습니다(참조: 매크로), 행 및 주석을 포함합니다.
다음과 같은 두 가지 종류의 규칙이 있습니다. 추론 규칙목표 규칙. 그만큼 확인 유틸리티는
기본 제공 추론 규칙 집합을 포함합니다. 만약 -r 옵션이 있는 경우 기본 제공 규칙
사용되지 않고 접미사 목록이 삭제됩니다. 두 가지 유형의 추가 규칙은
makefile에 지정해야 합니다. 규칙이 두 번 이상 정의된 경우 규칙의 값
마지막으로 지정된 것입니다. 매크로는 두 번 이상 정의할 수도 있습니다.
매크로의 값은 다음에 지정됩니다. 매크로. 댓글은 a로 시작합니다. ('#')
이스케이프되지 않을 때까지 계속 도달했습니다.

기본적으로 다음 파일을 순서대로 시도해야 합니다. ./makefile./메이크파일. 면
...도 아니고 ...도 아니다 ./makefile or ./메이크파일 발견되면 다른 구현 정의 파일도 있을 수 있습니다.
시험을 마친. XSI 호환 시스템에서 추가 파일은 ./s.makefile, SCCS/s.makefile,
./s.Make파일SCCS/s.Makefile 또한 시도됩니다.

XNUMXD덴탈의 -f 옵션은 지시한다 확인 이러한 기본 파일을 무시하고 지정된
대신 makefile로 인수. 만약 '-' 인수가 지정되면 표준 입력은
익숙한.

용어 메이크 파일 사용자가 제공한 모든 규칙을 참조하는 데 사용됩니다.
./makefile 또는 그 변종, 또는 -f 옵션을 선택합니다.

메이크파일의 규칙은 다음 유형의 라인으로 구성됩니다. 대상 규칙,
특수 대상 포함(참조 목표 규칙), 추론 규칙(참조 추론 규칙), 매크로
정의(참조 매크로), 빈 줄 및 주석.

대상 및 추론 규칙에는 다음이 포함될 수 있습니다. 명령 라인. 명령줄에는 접두사가 있을 수 있습니다.
실행 전에 제거되어야 합니다(참조 Makefile 실행).

탈출했을 때 (앞에 )는 어디에서나 찾을 수 있습니다.
명령줄, include 줄 또는 바로 앞 줄을 제외하고 makefile
라인을 포함하는 경우 다음의 선행 공백과 함께 대체되어야 합니다.
라인, 싱글로 . 탈출했을 때 의 명령줄에서 찾을 수 있습니다.
makefile, 명령줄에는 다음이 포함됩니다. , , 그리고 다음
단, 다음 줄의 첫 번째 문자는 포함되지 않습니다.
. 탈출했을 때 포함 라인 또는 라인에서 즉시 발견됨
포함 행 앞에 있으면 동작이 지정되지 않습니다.

포함
단어가 포함 줄의 시작 부분에 나타나고 그 뒤에 하나 이상의
줄의 나머지 부분에 의해 형성된 문자열은 다음과 같이 처리됩니다.
다음과 같이 경로 이름을 생성합니다.

* 후행 모든 의견은 폐기됩니다. 결과 문자열인 경우
큰따옴표 문자('"') 동작이 지정되지 않았습니다.

* 결과 문자열은 매크로 확장을 위해 처리되어야 합니다(참조 매크로.

* 어느 첫 번째 non- 로 사용한다
매크로 확장 문자열을 필드로 나누는 구분 기호. 여부는 미정
다른 공백 문자도 구분 기호로 사용됩니다. 불특정
경로 이름 확장 여부(참조 섹션 2.13, 무늬 매칭 표기법) 또한
수행.

* 구분 기호 및 선택적 경로 이름 확장 처리 결과가 XNUMX인 경우
또는 두 개 이상의 비어 있지 않은 필드인 경우 동작이 지정되지 않습니다. 결과가 하나라면
비어 있지 않은 필드인 경우 해당 필드는 경로 이름으로 사용됩니다.

경로 이름이 a로 시작하지 않는 경우 '/' 그것은 현재에 상대적으로 취급될 것입니다
메이크파일을 포함하는 디렉토리에 상대적이지 않은 프로세스의 작업 디렉토리.
파일이 이 위치에 없으면 추가 여부가 지정되지 않습니다.
디렉토리가 검색됩니다.

경로명으로 지정된 파일의 내용은 읽혀지고 처리됩니다.
포함 줄 대신 makefile에 나타납니다. 파일이 이스케이프로 끝나는 경우
동작이 지정되지 않았습니다.

파일 자체에 추가 포함 행이 포함될 수 있습니다. 구현은 중첩을 지원해야 합니다.
포함 파일의 깊이는 최소 16입니다.

Makefile 실행
Makefile 명령줄은 한 번에 하나씩 처리됩니다.

Makefile 명령줄에는 다음 접두사 중 하나 이상이 있을 수 있습니다. ('-'),
앳 기호('@') 또는 ('+'). 이들은 방법을 수정할 것입니다 확인
명령을 처리합니다.

− 명령 접두사에 , 아니면 그 -나 옵션이 있거나
특수 대상 .무시하다 전제 조건으로 현재 목표가 있거나
전제 조건, 명령을 실행하는 동안 발견된 모든 오류는 무시됩니다.

@ 명령 접두사에 at 기호가 포함되어 있고 확인 유틸리티 명령줄 -n
옵션이 지정되지 않았거나 -s 옵션이 있거나 특수 대상 .조용한
전제 조건으로 현재 대상이 있거나 전제 조건이 없는 경우 명령
실행되기 전에 표준 출력에 기록되지 않습니다.

+ 명령 접두사에 , 이것은 메이크파일 명령줄을 나타냅니다.
경우에도 실행됩니다. -n, -q-t 이 지정됩니다.

An 실행 접두사 문자를 제거하여 명령줄에서 빌드됩니다. 제외하고
at-sign 접두사에 설명된 대로 실행 줄은 표준에 작성되어야 합니다.
출력, 선택적으로 앞에 . 그런 다음 실행 라인은 다음에 의해 실행됩니다.
쉘에 인수로 전달된 것처럼 체계() 인터페이스, 경우 제외
오류가 무시되지 않으면 셸 -e 옵션도 유효합니다. 오류가 있는 경우
명령에 대해 무시되고 있습니다( -나 옵션, a '-' 명령 접두사 또는
a .무시하다 특수 대상), 쉘 -e 옵션이 적용되지 않습니다. 위한 환경
실행되는 명령은 다음 환경의 모든 변수를 포함해야 합니다. 확인.

기본적으로 확인 명령 실행에서 XNUMX이 아닌 상태를 수신하면
표준 오류에 대한 오류 메시지와 함께 종료됩니다.

목표 규칙
대상 규칙의 형식은 다음과 같습니다.

목표 [목표...]: [전제 조건...][;명령]
[명령
명령
...]

하지 지원 시작하다

대상 항목은 -null이 아닌 분리된 대상 목록, 그런 다음
, 그 다음에 -별도의 필수 구성 요소 목록이 비어 있을 수 있습니다. 다음 텍스트
, 있는 경우 및 a로 시작하는 모든 다음 줄 , are makefile 명령
대상을 업데이트하기 위해 실행할 행. 시작하지 않는 첫 번째 비어 있지 않은 행
와 함께 또는 '#' 새로운 진입을 시작합니다. 빈 줄 또는 빈 줄 또는 줄 시작
'#', 새 항목을 시작할 수 있습니다.

애플리케이션은 다음으로만 구성된 문자 집합에서 대상 이름을 선택해야 합니다.
이식 가능한 문자 세트의 마침표, 밑줄, 숫자 및 알파벳(
POSIX.1‐2008의 기본 정의 볼륨, 섹션 6.1, 휴대용 충전 케이스 캐릭터 세트).
구현 시 대상 이름의 다른 문자를 확장자로 허용할 수 있습니다. 그만큼
문자를 포함하는 대상의 해석 '%''"' 구현에 의해 정의됩니다.

전제 조건이 있지만 명령이 없는 대상은 다음 항목에 추가하는 데 사용할 수 있습니다.
해당 대상에 대한 전제 조건 목록입니다. 지정된 대상에 대해 하나의 대상 규칙만 다음을 포함할 수 있습니다.
명령.

다음 중 하나로 시작하는 줄을 호출합니다. 특별한 목표 및 제어
운영 확인:

.기본 메이크파일이 이 특수 대상을 사용하는 경우 응용 프로그램은 다음을 확인해야 합니다.
명령으로 지정되지만 전제 조건은 없습니다. 명령은
에 의해 사용되는 확인 대상을 구축하는 데 사용할 수 있는 다른 규칙이 없는 경우.

.무시하다 이 특수 대상의 전제 조건은 대상 자체입니다. 이로 인해
동일한 방식으로 무시할 관련 명령의 오류
에 의해 지정된 -나 옵션. 후속 발생 .무시하다 에 추가한다
명령 오류를 무시하는 대상 목록. 전제 조건이 지정되지 않은 경우, 확인
처럼 행동한다 -나 옵션이 지정되었고 모든 명령에서 오류가 발생했습니다.
모든 대상과 관련된 항목은 무시됩니다.

.POSIX 응용 프로그램은 이 특수 대상이 없이 지정되도록 해야 합니다.
전제 조건 또는 명령. 주석이 아닌 첫 번째 행으로 나타나는 경우
메이크 파일, 확인 이 섹션에서 지정한 대로 메이크파일을 처리합니다.
그렇지 않으면, 확인 지정되지 않았습니다.

.귀중한 이 특수 대상의 전제 조건은 다음과 같은 경우 제거되지 않습니다. 확인 하나를 받는다
ASYNCHRONOUS EVENTS에 명시적으로 설명된 비동기 이벤트의
부분. 후속 발생 .귀중한 소중한 목록에 추가됩니다
파일. 전제 조건이 지정되지 않은 경우 makefile의 모든 대상은
로 지정된 것처럼 처리 .귀중한.

.SCCS_GET 응용 프로그램은 이 특수 대상이 없이 지정되도록 해야 합니다.
전제 조건. 이 특수 대상이 메이크파일에 포함된 경우 명령
이 대상으로 지정된 기본 명령은
이 특별한 대상(참조 태만 규칙). 이것으로 지정된 명령
대상은 현재 파일에서 찾을 수 없는 모든 SCCS 파일을 가져오는 데 사용됩니다.
디렉토리.

소스 파일이 종속성 목록에 이름이 지정되면 확인 그들을 공정하게 대할 것이다
다른 대상처럼. 소스 파일이 존재하는 것으로 추정되기 때문에
디렉토리에 대한 항목을 makefile에 추가할 필요가 없습니다. 때
대상은 종속성이 없지만 디렉토리에 존재합니다. 확인 가정한다
해당 파일이 최신 상태인지 확인합니다. 그러나 이름이 SCCS 파일인 경우 SCCS/초.소스 파일
대상으로 발견된다 소스 파일, 확인 대상의 타임스탬프를 비교합니다.
의 파일 SCCS/s.source_file 대상이 최신 상태인지 확인합니다. 만약에
대상이 없거나 SCCS 파일이 최신인 경우 확인 자동으로
에 대해 지정된 명령을 실행합니다. .SCCS_GET 회수할 특별한 표적
최신 버전. 그러나 타겟이 누구나 쓸 수 있는 경우에는 확인 하여야 한다
새 버전을 검색하지 않습니다.

.조용한 이 특수 대상의 전제 조건은 대상 자체입니다. 이로 인해
이전에 표준 출력에 기록되지 않도록 관련된 명령
그들은 처형됩니다. 후속 발생 .조용한 의 목록에 추가됩니다
자동 명령으로 대상을 지정합니다. 전제 조건이 지정되지 않은 경우, 확인 하여야 한다
처럼 행동하다 -s 옵션이 지정되었으며 명령이나 터치 메시지가 없습니다.
모든 대상과 관련된 항목은 표준 출력에 기록됩니다.

.접미사 전제 조건 .접미사 알려진 접미사 목록에 추가되어야 하며
추론 규칙과 함께 사용됩니다(참조 추론 규칙). 만약
.접미사 전제 조건이 없으면 알려진 접미사 목록은 다음과 같아야 합니다.
개간.

특수 대상 .무시하다, .POSIX, .귀중한, .조용한.접미사 명시되어야 한다
명령없이.

선행으로 구성된 이름을 가진 대상 대문자 다음에
"포식스" 그런 다음 다른 문자는 향후 표준화를 위해 예약됩니다. 대상
선행하는 이름으로 구성된 하나 이상의 대문자 다음에
구현 확장을 위해 예약되었습니다.

매크로
매크로 정의는 다음과 같은 형식입니다.

string1 = [string2]

이름이 지정된 매크로 string1 의 값을 갖는 것으로 정의됩니다. string2어디로 string2 is
있는 경우 뒤에 오는 모든 문자로 정의됩니다. , 코멘트 문자까지
('#') 또는 이스케이프되지 않은 . 어느 바로 앞이나 뒤의 문자
무시됩니다.

애플리케이션은 다음으로만 구성된 문자 집합에서 매크로 이름을 선택해야 합니다.
이식 가능한 문자 세트의 마침표, 밑줄, 숫자 및 알파벳(
POSIX.1‐2008의 기본 정의 볼륨, 섹션 6.1, 휴대용 충전 케이스 캐릭터 세트). 매크로
이름은 다음을 포함하지 않아야 합니다. . 구현 시 다른 문자를 허용할 수 있습니다.
매크로 이름은 확장자입니다.

매크로는 makefile의 어디에나 나타날 수 있습니다. $( 형식을 사용한 매크로 확장string1) 또는
${string1}는 다음으로 대체됩니다. string2, 다음과 같이 :

* 타겟 라인의 매크로는 타겟 라인을 읽을 때 평가됩니다.

* makefile 명령줄의 매크로는 명령이 실행될 때 평가됩니다.

* 문자열 앞의 매크로 매크로 정의에서 평가되어야 합니다
매크로 할당이 이루어질 때.

* 매크로 이후 매크로 정의에서
정의된 매크로는 규칙이나 명령에서 사용되거나 매크로에서
정의.

다음과 같은 경우 괄호 또는 중괄호는 선택 사항입니다. string1 단일 문자입니다. 매크로 $$
단일 문자로 대체됩니다. '$'. 면 string1 매크로 확장에는
매크로 확장, 결과는 지정되지 않습니다.

$( 형식을 사용한 매크로 확장string1[:서브스트1=[서브스트2]]) 또는
${string1[:서브스트1=[서브스트2]]}는 모든 항목을 대체하는 데 사용할 수 있습니다. 서브스트1서브스트2
매크로 대체가 수행될 때. 그만큼 서브스트1 교체되는 것으로 인정
단어 끝에 접미사가 붙을 때 string1 (어디 워드, 이 맥락에서
줄의 시작 부분으로 구분되는 문자열로 정의됩니다. , 또는 ).
If string1 매크로 확장에 매크로 확장이 포함되어 있으면 결과가 지정되지 않습니다.

매크로 확장 string1 매크로 정의 라인의 수는 읽을 때 평가됩니다. 매크로
확장 string2 매크로 정의 라인의 수는 매크로가 실행될 때 수행되어야 합니다.
에 의해 식별 string1 규칙 또는 명령에서 확장됩니다.

매크로 정의는 다음 소스에서 다음 논리로 가져와야 합니다.
makefile을 읽기 전에 순서를 지정합니다.

1. 에 지정된 매크로 확인 유틸리티 명령줄에 지정된 순서대로
명령줄. 에 정의된 내부 매크로인지 여부는 지정되지 않았습니다. 내부의 매크로
이 소스에서 허용됩니다.

2. 정의된 매크로 메이크플래그 환경 변수에 지정된 순서대로
환경 변수. 에 정의된 내부 매크로인지 여부는 지정되지 않았습니다.
내부의 매크로 이 소스에서 허용됩니다.

3. 다음을 제외한 환경의 내용 메이크플래그SHELL 변수와
null 값이 있는 변수를 포함합니다.

4. 내장된 추론 규칙에 정의된 매크로 확인.

이러한 소스의 매크로 정의는 하위 소스의 매크로 정의를 재정의하지 않습니다.
번호가 매겨진 출처. 단일 소스의 매크로 정의(예: 확인 유틸리티
명령줄, 메이크플래그 환경 변수 또는 기타 환경 변수)
동일한 소스의 이전 매크로 정의를 재정의해야 합니다.

makefile(s)에 정의된 매크로는 이전에 발생하는 매크로 정의를 재정의합니다.
소스 4의 makefile(s) 및 매크로 정의에서. -e 옵션이 지정되지 않은 경우
makefile(s)에 정의된 매크로는 소스 3의 매크로 정의를 재정의합니다. 매크로
makefile(s)에 정의된 매크로는 소스 1 또는 소스 2의 매크로 정의를 재정의하지 않습니다.

makefile을 읽기 전에 모든 확인 유틸리티 명령줄 옵션(예외 -f
-p) and 확인 유틸리티 명령줄 매크로 정의( 메이크플래그
매크로), 아직 포함되지 않은 메이크플래그 매크로, 메이크플래그
구현 정의 방식으로 인용된 매크로 메이크플래그 에 의해 읽혀진다
의 또 다른 인스턴스 확인 명령을 실행하면 원래 매크로의 값이 복구됩니다. 다른
구현 정의 옵션 및 매크로도 메이크플래그 매크로. 만약에
이것은 메이크플래그 매크로, 또는 메이크플래그 매크로는 다음에서 수정됩니다.
다음 시간에 메이크플래그 환경 변수는 새로운 것과 일치하도록 수정되어야 합니다.
가치 메이크플래그 매크로. 설정 결과 메이크플래그 Makefile에는
지정되지 않음.

makefile을 읽기 전에 모든 확인 유틸리티 명령줄 매크로 정의
(제외 메이크플래그 매크로 또는 SHELL 매크로)의 환경에 추가되어야 합니다. 확인.
다른 구현 정의 변수도 다음의 환경에 추가할 수 있습니다. 확인.

XNUMXD덴탈의 SHELL 매크로는 특별하게 취급됩니다. 그것은에 의해 제공될 것입니다 확인 로 설정
쉘 명령 언어 해석기의 경로 이름(참조 sh). SHELL 환경
변수는 값에 영향을 미치지 않습니다. SHELL 매크로. 만약에 SHELL 에 정의되어 있습니다
makefile 또는 명령줄에 지정되어 있는 경우 원래 값을 대체합니다.
SHELL 매크로에 영향을 미치지 않습니다. SHELL 환경 변수. 기타 효과
정의 SHELL makefile 또는 명령줄에서 구현 정의됩니다.

추론 규칙
추론 규칙의 형식은 다음과 같습니다.

목표:
명령
[명령]
...

하지 지원 시작하다 or #

애플리케이션은 다음을 보장해야 합니다. 목표 부분은 유효한 대상 이름입니다(참조 목표
규칙) 형식의 .s2 or .s1.s2 (어디에 .s1.s2 로 주어진 접미사입니다.
의 전제 조건 .접미사 특별한 타겟과 s1s2 포함하지 않음 또는
문자.) 하나만 있는 경우 대상에서 단일 접미사입니다.
추론 규칙. 마침표가 두 개인 대상은 이중 접미사 추론 규칙입니다. 추론
규칙 앞에 하나의 대상만 있을 수 있습니다. .

응용 프로그램은 makefile이 다음에 대한 전제 조건을 지정하지 않도록 해야 합니다.
추론 규칙; 공백 이외의 어떤 문자도 뒤따를 수 없습니다. 에서
첫 번째 줄을 만들 때를 제외하고 규칙, 아래에서 묘사 되어진. 전제 조건은
아래에 설명된 대로 추론됩니다.

추론 규칙을 재정의할 수 있습니다. 기존 추론 규칙과 일치하는 대상은
이전 추론 규칙을 덮어씁니다. 다음으로 구성된 명령으로 빈 규칙을 생성할 수 있습니다.
단순히 (즉, 규칙이 여전히 존재하고 추론 규칙 중에 발견됩니다.
검색하지만 비어 있기 때문에 실행 효과가 없습니다). 빈 규칙은 다음과 같을 수도 있습니다.
형식은 다음과 같습니다.

지배:;

여기서 XNUMX 이상 문자는 그리고 .

XNUMXD덴탈의 확인 유틸리티는 대상의 접미사 및 해당 전제 조건을 사용하여
대상을 최신 상태로 만들 수 있습니다. 추론 규칙 목록은 명령을 정의합니다.
실행. 기본적으로, 확인 내장된 추론 규칙 세트를 포함합니다. 추가 규칙
makefile에서 지정할 수 있습니다.

특별한 표적 .접미사 접미사 목록을 전제 조건으로 포함합니다.
추론 규칙에 의해 사용됩니다. 접미사가 지정되는 순서는 다음을 정의합니다.
접미사에 대한 추론 규칙이 사용되는 순서. 새로운 접미사는
를 지정하여 현재 목록에 추가 .접미사 makefile의 특수 대상. ㅏ
.접미사 전제 조건이 없는 대상은 접미사 목록을 지웁니다. 빈
.접미사 목표에 이어 새로운 .접미사 목록은 순서를 변경하는 데 필요합니다.
접미사.

일반적으로 사용자는 각 접미사에 대한 추론 규칙을 제공합니다. 에 대한 추론 규칙
접미사로 대상 업데이트 .s1 접미사가 있는 전제 조건에서 .s2 로 지정됩니다
목표 .s2.s1. 내부 매크로는 일반 추론 규칙을 지정하는 수단을 제공합니다.
(참조 내부의 매크로).

대상을 업데이트하는 대상 규칙이 없으면 추론 규칙을 확인해야 합니다. 그만큼
대상의 접미사(.s1)에 의해 지정된 접미사 목록과 비교됩니다.
전에, .접미사 특별한 목표. 만약 .s1 접미사는 .접미사, 추론
규칙은 첫 번째에 정의된 순서대로 검색됩니다. .s2.s1 규칙의 전제 조건
파일 ($*.s2) 존재합니다. 이 전제 조건과 관련하여 대상이 오래된 경우
해당 추론 규칙에 대한 명령이 실행됩니다.

빌드할 대상에 접미사가 포함되어 있지 않고 대상에 대한 규칙이 없는 경우,
단일 접미사 추론 규칙을 확인해야 합니다. 단일 접미사 추론 규칙
대상 이름과 일치하는 이름을 가진 파일이 있는 경우 대상을 빌드하는 방법을 정의합니다.
단일 접미사 중 하나가 추가됩니다. 하나의 접미사가 있는 규칙 .s2 의 정의입니다
구축 방법 목표타겟.s2. 다른 접미사(.s1)는 null로 처리됩니다.

ㅏ ('~')는 위의 규칙에서 현재 디렉터리의 SCCS 파일을 나타냅니다. 따라서,
규칙 .c~.o SCCS C 언어 소스 파일을 개체 파일(.o).
때문에 s. SCCS 파일은 접두사이며 호환되지 않습니다. 확인의 접미사
보기의. 따라서, '~' 파일 참조를 SCCS 파일로 변경하는 방법입니다.
참고.

도서관
대상 또는 전제 조건에 괄호가 포함되어 있으면
아카이브 라이브러리. 을 위해 lib(회원.o) 표현 lib 아카이브의 이름을 나타냅니다.
도서관과 회원.o 회원명으로. 신청서는 회원이
객체 파일 .o 접미사. 표현식의 수정 시간은
아카이브 라이브러리에 보관된 회원의 수정 시간 보다 ar. 그만큼 .a 접미사
아카이브 라이브러리를 참조합니다. 그만큼 .s2.a 규칙은 멤버를 업데이트하는 데 사용됩니다.
접미사가 있는 파일의 라이브러리 .s2.

내부의 매크로
XNUMXD덴탈의 확인 유틸리티는 대상에서 사용할 수 있는 XNUMX개의 내부 매크로를 유지해야 합니다.
추론 규칙. 이러한 매크로의 의미를 명확하게 정의하기 위해 일부
용어 설명 목표 지배, 추론 지배, 목표전제 조건 is
필요한.

대상 규칙은 특정 대상에 대한 메이크파일에서 사용자가 지정합니다. 추론
규칙은 사용자 지정 또는 확인-대상 이름의 특정 클래스에 대한 특정 규칙.
명시적 전제 조건은 대상 행의 makefile에 지정된 전제 조건입니다.
암시적 전제 조건은 추론 규칙이 생성될 때 생성되는 전제 조건입니다.
사용된. 추론 규칙은 암시적 전제 조건 또는 명시적 전제 조건에 적용됩니다.
makefile에 대상 규칙이 정의되어 있지 않습니다. 대상 규칙이 적용됩니다.
makefile에 지정된 대상에.

makefile의 대상이 업데이트되기 전에 각 전제 조건(명시적 및
묵시적) 업데이트됩니다. 이것은 각 각을 재귀적으로 처리함으로써 달성됩니다.
전제 조건. 재귀 시 각 전제 조건은 대상 자체가 됩니다. 그것은
전제 조건이 없는 대상이 발견될 때까지 차례로 재귀적으로 처리됩니다.
재귀가 중지되는 시점의 전제 조건. 그런 다음 재귀가 백업됩니다.
진행되는 동안 각 대상을 업데이트합니다.

다음 정의에서 단어는 목표 다음 중 하나를 나타냅니다.

* makefile에 지정된 대상

* 메이크파일에 지정된 명시적 전제 조건은 다음과 같은 경우 대상이 됩니다. 확인
재귀 중에 처리

* 다음과 같은 경우 대상이 되는 암시적 전제 조건 확인 재귀 중에 처리

다음 정의에서 단어는 전제 조건 다음 중 하나를 나타냅니다.

* 특정 대상에 대해 makefile에 지정된 명시적 전제 조건

* 적절한 추론을 찾은 결과 생성된 암시적 전제 조건
대상의 접미사와 일치하는 규칙 및 해당 파일

XNUMX개의 내부 매크로는 다음과 같습니다.

$@ $@는 현재 대상의 전체 대상 이름 또는
라이브러리 아카이브 대상의 아카이브 파일 이름 부분. 두 가지 모두에 대해 평가됩니다.
대상 및 추론 규칙.

예를 들어,의 .ca 추론 규칙, $@는 오래된 것을 나타냅니다. .a 에 파일을
건축되다. 마찬가지로 메이크파일 대상 규칙에서 빌드할 lib.a파일.c, $@
구식을 나타냅니다 lib.a.

$% $% 매크로는 현재 대상이 아카이브 라이브러리인 경우에만 평가됩니다.
양식의 구성원 라이브러리 이름(회원.o). 이 경우 $@는 다음과 같이 평가됩니다.
라이브러리 이름 $%는 다음과 같이 평가됩니다. 회원.o. $% 매크로는 다음에 대해 평가되어야 합니다.
대상 및 추론 규칙 모두.

예를 들어 빌드할 makefile 대상 규칙에서 lib.a(파일.오), $%는
파일.오, $@와 달리 다음을 나타냅니다. lib.a.

$? $? 매크로는 이전 요구 사항보다 새로운 전제 조건 목록으로 평가됩니다.
현재 목표. 대상 및 추론 규칙 모두에 대해 평가되어야 합니다.

예를 들어 빌드할 makefile 대상 규칙에서 음식물파일1.o, 파일2.o
파일3.o, 그리고 어디 음식물 관련하여 구식이 아닙니다. 파일1.o, 하지만 아웃 오브-
에 관한 날짜 파일2.o파일3.o, $? 나타냅니다 파일2.o파일3.o.

$< 추론 규칙에서 $< 매크로는 존재하는 파일 이름으로 평가됩니다.
대상에 대해 추론 규칙을 선택할 수 있습니다. 에서 .기본 규칙,
$< 매크로는 현재 대상 이름으로 평가됩니다. $< 매크로의 의미
달리 지정되지 않습니다.

예를 들어,의 .ca 추론 규칙, $<는 전제 조건을 나타냅니다. .c 파일.

$* $* 매크로는 접미사가 삭제된 현재 대상 이름으로 평가됩니다. 그것
최소한 추론 규칙에 대해 평가되어야 합니다.

예를 들어,의 .ca 추론 규칙, $*.o는 오래된 것을 나타냅니다. .o 파일
전제 조건에 해당하는 .c 파일.

각 내부 매크로에는 대체 형식이 있습니다. 대문자 일 때 '디' or 'NS' is
매크로에 추가되면 의미가 다음으로 변경됩니다. 예배 규칙서 부품 for '디'
파일 이름 부품 for 'NS'. 디렉토리 부분은
후행 ; 현재 디렉토리의 경우 디렉토리 부분은 '.'. $? 매크로
두 개 이상의 필수 파일 이름, $(?D) 및 $(?F)(또는 ${?D} 및 ${?F})가 포함되어 있습니다.
매크로는 각각 디렉토리 이름 부분과 파일 이름 부분 목록으로 확장됩니다.

대상 lib(회원.o)와 s2.a 규칙에 따라 내부 매크로는 다음과 같이 정의됩니다.

$< 회원.s2

$* 회원

$@ lib

$? 회원.s2

$% 회원.o

태만 규칙
에 대한 기본 규칙 확인 다음과 같은 결과를 달성해야 합니다.
사용 된. C 언어 개발 유틸리티를 지원하지 않는 구현
옵션 생략 가능 CC, 깃발, YACC, Y플래그, LEX, LFLAGS, LDFLAGS.c, .y.l
추론 규칙. FORTRAN을 지원하지 않는 구현은 생략할 수 있습니다. FC, FFLAG
.f 추론 규칙. 구현 시 추가 매크로 및 규칙을 제공할 수 있습니다.

스페셜 목표

.SCCS_GET: sccs $(SCCSFLAGS) $(SCCSGETFLAGS) $@ 가져오기

.접미사: .o .c .y .l .a .sh .f .c~ .y~ .l~ .sh~ .f~

매크로

만들다=만들다
AR=AR
ARFLAGS=-rv
YACC=야크
Y플래그=
LEX=렉스
LFLAGS=
LDFLAGS=
CC=c99
CFLAGS=-O
FC=포트77
FFLAGS=-O 1
GET=얻다
지플래그=
SCCSFLAG=
SCCSGETFLAGS=−s

SINGLE 접미사 규칙

.씨:
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $

.에프:
$(FC) $(FFLAGS) $(LDFLAGS) -o $@ $

.sh :
CP $< $@
chmod a+x $@

.c~:
$(GET) $(GFLAGS) -p $< > $*.c
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $*.c

.f~:
$(GET) $(GFLAGS) -p $< > $*.f
$(FC) $(FFLAGS) $(LDFLAGS) -o $@ $*.f

.쉬~:
$(GET) $(GFLAGS) -p $< > $*.sh
CP $*.sh $@
chmod a+x $@

더블 접미사 규칙

.co:
$(CC) $(CFLAGS) -c $

.fo:
$(FC) $(FFLAGS) -c $

.에야디야:
$(YACC) $(YFLAGS) $
$(CC) $(CFLAGS) -c y.tab.c
rm -f y.tab.c
mv y.tab.o $@

.봐라:
$(LEX) $(LFLAGS) $
$(CC) $(CFLAGS) -c lex.yy.c
rm -f lex.yy.c
mv lex.yy.o $@

.yc:
$(YACC) $(YFLAGS) $
mv y.tab.c $@

.lc:
$(LEX) $(LFLAGS) $
mv lex.yy.c $@

.c~.o:
$(GET) $(GFLAGS) -p $< > $*.c
$(CC) $(CFLAGS) -c $*.c

.f~.o:
$(GET) $(GFLAGS) -p $< > $*.f
$(FC) $(FFLAGS) -c $*.f

.y~.o:
$(GET) $(GFLAGS) -p $< > $*.y
$(YACC) $(YFLAGS) $*.y
$(CC) $(CFLAGS) -c y.tab.c
rm -f y.tab.c
mv y.tab.o $@

.l~.o:
$(GET) $(GFLAGS) -p $< > $*.l
$(LEX) $(LFLAGS) $*.l
$(CC) $(CFLAGS) -c lex.yy.c
rm -f lex.yy.c
mv lex.yy.o $@

.y~.c:
$(GET) $(GFLAGS) -p $< > $*.y
$(YACC) $(YFLAGS) $*.y
mv y.tab.c $@

.l~.c:
$(GET) $(GFLAGS) -p $< > $*.l
$(LEX) $(LFLAGS) $*.l
mv lex.yy.c $@

.ca:
$(CC) -c $(CFLAGS) $
$(AR) $(ARFLAGS) $@ $*.o
rm -f $*.o

.파:
$(FC) -c $(FFLAGS) $
$(AR) $(ARFLAGS) $@ $*.o
rm -f $*.o

EXIT 지위


-q 옵션이 지정되면 확인 유틸리티는 다음 중 하나로 종료됩니다.
값 :

0 성공적으로 완료되었습니다.

1 대상이 최신 상태가 아닙니다.

>1 오류가 발생했습니다.

-q 옵션이 지정되지 않은 경우 확인 유틸리티는 다음 중 하나로 종료됩니다.
값 :

0 성공적으로 완료되었습니다.

>0 오류가 발생했습니다.

결과 OF 오류


기본.

XNUMXD덴탈의 수행원 섹션 are 유익합니다.

신청 사용법


소스 파일이 있는 경우(예: ./source.c) 해당하는 두 개의 SCCS 파일이 있습니다.
그것에 (./s.source.c./SCCS/s.source.c), XSI 준수 시스템에서 확인 SCCS를 사용합니다.
현재 디렉토리의 파일. 그러나 사용자는 기본 SCCS를 사용하는 것이 좋습니다.
유틸리티(관리자, 델타, 얻을등) 또는 SCCS 모든 소스 파일에 대한 유틸리티
주어진 디렉토리. 주어진 소스 파일에 두 형식이 모두 사용되는 경우 향후 개발자는
혼동할 가능성이 매우 높습니다.

다음을 지정하는 것은 휴대용 메이크파일에 따라야 합니다. .POSIX 하기 위한 특별한 표적
로컬 확장자의 영향을 받지 않도록 보장합니다.

XNUMXD덴탈의 -k-S 두 옵션이 모두 존재하므로 명령줄 간의 관계,
전에, 메이크플래그 변수와 메이크파일을 정밀하게 제어할 수 있습니다. 만약 k 깃발은
전달 메이크플래그 명령은 다음과 같은 형식입니다.

$(만들기) -S

그런 다음 자식에 대한 기본 동작이 복원됩니다. 확인.

-n 옵션이 지정되면 항상 추가됩니다. 메이크플래그. 이것은 재귀를 허용합니다
확인 -n 목표 업데이트를 위해 수행할 모든 작업을 확인하는 데 사용됩니다. 목표.

널리 퍼진 역사적 관행으로 인해 ('#') 안에
주석의 시작 부분에 있는 변수는 주석을 불가능하게 만드는 안타까운 부작용이 있습니다.
배치하기 위해 변수에서 다음과 같은 것을 금지합니다.

깃발 = "-D COMMENT_CHAR='#'"

많은 역사적 확인 유틸리티는 중간에 추론 규칙을 함께 연결하는 것을 중지합니다.
대상이 존재하지 않습니다. 예를 들어, 확인 둘 다
.yc.co 변환하는 데 사용할 수 있습니다. .y.o. 대신, 이 경우, 확인 필요
사용 .에야디야 규칙.

이식 가능한 메이크파일을 제공하는 가장 좋은 방법은 필요한 모든 규칙을 포함하는 것입니다.
makefile 자체. 제공된 규칙은 이의 다른 부분에서 제공하는 기능만 사용합니다.
POSIX.1-2008 볼륨. 기본 규칙에는 이 항목의 선택적 명령에 대한 규칙이 포함됩니다.
POSIX.1-2008 볼륨. 제공된 명령과 관련된 규칙만 필요합니다.
구현의 기본 세트.

다른 매크로 내에서 사용되는 매크로는 새 매크로가 사용될 때 평가됩니다.
새 매크로가 정의됩니다. 그러므로:

MACRO = 값 1
현재 = $(매크로)
MACRO = 값 2

표적:
에코 $(신규)

생산할 것이다 값 2 하지 값 1 이후 현재 필요할 때까지 확장되지 않았습니다.
에코 명령 행.

일부 역사적 응용 프로그램은 혼합된 것으로 알려져 있습니다. 대상_이름매크로=이름
명령줄의 피연산자, 모든 매크로가 처리되기 전에
대상이 처리됩니다. 일부 응용 프로그램은 이 작업을 수행하지 않지만
이전 버전과의 호환성 지원은 일부 구현에 포함될 수 있습니다.

파일 이름에 다음 문자가 있으면 문제가 발생할 수 있습니다. '=', ':', '`', 작은따옴표 및
'@'. 포함 파일 이름, 패턴 일치 문자 및 '"' 마찬가지로 피해야 합니다.
일부 구현에서는 특별하게 취급될 수 있습니다.

추론 규칙의 경우 $< 및 $? 비슷해 보인다. 그러나 예를 보여줍니다
사소한 차이. 다음을 포함하는 메이크파일에서:

foo.o: 푸.h

if 푸.h 보다 최신입니다 푸.오, 아직 foo.c ~보다 나이가 많다 푸.오, 만들 기본 제공 규칙
푸.오foo.c 가 사용되며 $<는 다음과 같습니다. foo.c 그리고 $? 동일 푸.h. 면 foo.c 또한
보다 새로운 푸.오, $<는 다음과 같습니다. foo.c 그리고 $? 동일하다 푸.h foo.c.

사용 예


1. 다음 명령:

확인

makefile에서 찾은 첫 번째 대상을 만듭니다.

2. 다음 명령:

확인 정크

목표를 만든다 정크.

3. 다음 메이크파일은 PGM 두 파일에 따라 달라집니다. 아오, 그리고 그들은
차례로 해당 소스 파일(교류기원전) 및 공통 파일
h 포함:

프로그램: 아오
c99 아오 -오 PGM
아오: h 포함 교류
c99 -c 교류
악: h 포함 기원전
c99 -c 기원전

4. 최적화를 위한 예시 .o 파일에서 .c 파일은 다음과 같습니다.

.co:
c99 -c -O $*.c

또는 :

.co:
c99 -c -O $<

5. 아카이브 인터페이스의 가장 일반적인 용도는 다음과 같습니다. 여기서는
소스 파일은 모두 C 언어 소스입니다.

라이브러리: lib(파일1.o) lib(파일2.o) lib(파일3.o)
@ 에코 lib is 지금 최신의

XNUMXD덴탈의 .ca 만드는 데 사용되는 규칙 파일1.o, 파일2.o파일3.o 에 삽입 lib.

탈출의 치료 makefile 전체의 문자는 역사적입니다.
관행. 예를 들어 추론 규칙은 다음과 같습니다.

.co\
:

작동하고 매크로:

f= 바즈\
비즈
a:
에코 ==$에프==

메아리 "==바 바즈 비즈==".

만약 $? 이었다:

/usr/include/stdio.h /usr/include/unistd.h 푸.h

그러면 $(?D)는 다음과 같습니다.

/ usr / include / usr / include .

$(?F)는 다음과 같습니다.

stdio.h unistd.h 푸.h

6. 기본 제공 규칙의 내용은 다음을 실행하여 볼 수 있습니다.

확인 -p -f / dev / null 2> / dev / null

이론적 해석


XNUMXD덴탈의 확인 이 POSIX.1-2008 볼륨에 설명된 유틸리티는 다음과 같은 수단을 제공하기 위한 것입니다.
이식 가능한 소스 코드를 실행 가능한 실행 파일로 변경하기 위해
POSIX.1-2008 준수 시스템. System V에 존재하는 가장 일반적인 기능을 반영합니다.
및 BSD 확인s.

역사적으로 확인 유틸리티는 벤더에게 특히 비옥한 토양이었으며
연구 조직별 구문 수정 및 확장. 예를 들면 다음과 같습니다.

* 병렬 실행을 지원하는 구문(예: 다양한 다중 프로세서 공급업체,
GNU 등)

* 대상과 그 전제 조건을 구분하는 추가 "연산자"(System V, BSD,
다른 사람)

* 문자열을 포함하는 명령줄 지정 "${MAKE}""$(만들기)" are
때 실행 -n 옵션이 지정됨(GNU 및 시스템 V)

* 라이브러리를 참조할 때 내부 매크로의 의미 수정(BSD 및
기타)

* 대상(BSD)의 모든 명령줄에 단일 셸 인스턴스 사용
다른 사람)

* 허용 캐릭터뿐만 아니라 명령줄을 구분하는 문자(BSD)

* C 전처리기 스타일 ``include'' 및 ``ifdef'' 구성 추가(System V, GNU, BSD,
다른 사람)

* 명령줄 원격 실행(Sprite 및 기타)

* 추가 특수 대상 지정(BSD, System V 및 대부분의 기타)

또한 많은 공급업체와 연구 기관에서 기본 개념을 재고했습니다.
확인, 완전히 새로운 구문뿐만 아니라 광범위하게 확장된 구문을 생성합니다. 이들 각각
버전 확인 다른 사용자 커뮤니티의 요구 사항을 충족합니다. 그것은 불합리하다
이 POSIX.1-2008 볼륨은 호환되지 않는 동작을 요구합니다(및
아마도 열등함) 그러한 공동체에 대한 역사적 관행에 비해.

유사한 상황에서 업계에 충분히 호환되지 않는 형식이 충분한 경우
그것들을 화해할 수 없게 만들기 위해 POSIX.1-2008의 이 볼륨은 다음 중 하나 또는 둘 모두를 따랐습니다.
두 가지 행동 과정. 명령의 이름이 변경되었습니다(정액, 에코팍스) 및/또는 명령
원하는 동작을 선택할 수 있도록 라인 옵션이 제공되었습니다(GREP, od팍스).

에 대해 지정된 구문 때문에 확인 유틸리티는 대체로
거의 모든 버전에서 허용되는 구문 확인, 반대하기로 결정했습니다.
이름을 변경하는 것이 생산적입니다. 그리고 makefile 자체가 기본 단위이기 때문에
이식성, 다음과 같은 새로운 옵션 문자를 예약하는 것은 완전히 효과적이지 않습니다.
확인 -P, 휴대용 동작을 달성하기 위해. 따라서 특별한 대상 .POSIX 추가되었다
사용자가 ``표준'' 동작을 지정할 수 있도록 합니다. 이 특별한 목표는
에서 확장을 배제하지 않음 확인 유용하며 그러한 확장이 존재하는 것을 배제하지도 않습니다.
대상을 지정하는 makefile에서 사용됩니다. 그러나 모든 확장을 배제합니다.
이전에 유효한 구문의 동작을 변경할 수 있는 적용 이러한 확장
명령줄 옵션 또는 새로운 특수 대상을 통해 제어해야 합니다. 의무 사항입니다
휴대용 메이크파일을 지정하여 .POSIX 그들이 보장하기 위해 특별한 목표
로컬 확장자의 영향을 받지 않습니다.

휴대용 버전의 확인 이 참조 페이지에 설명된 내용은
최신 소프트웨어 생성 도구 및 이와 같이 더 새롭고 더 앞선
기능이 포함되지 않았습니다. 휴대용을 설명하려는 시도가 있었습니다.
방해하지 않는 한 그러한 확장을 배제하지 않는 방식으로 makefile
여기에 설명된 휴대용 동작.

-n 옵션이 지정되면 항상 추가됩니다. 메이크플래그. 이것은 재귀를 허용합니다
확인 -n 목표 업데이트를 위해 수행할 모든 작업을 확인하는 데 사용됩니다. 목표.

정의 메이크플래그 System V 문자 문자열과 BSD 명령을 모두 허용합니다.
라인 형식. 두 형식은 구현이 다음과 같이 충분히 다를 수 있습니다.
모호성 없이 둘 다 지원합니다.

초기 제안은 ``인용되지 않은'' 의 시작으로 취급되었습니다.
논평. 그만큼 확인 유틸리티는 따옴표에 주의를 기울이지 않습니다. ㅏ 시작하다
주변 환경에 관계없이 의견을 말하십시오.

``다른 구현 정의 경로 이름도 시도할 수 있습니다''에 대한 텍스트는
./makefile./메이크파일 다음과 같은 확장을 허용하는 것입니다. SCCS/s.Makefile 및 기타
변형. 구현 정의 요구 사항이 되었습니다(지정되지 않은
행동) 예상치 못한 것을 선택할 수 있는 놀라운 구현을 강조하기 위해
처럼 /etc/메이크파일. XSI 규격 시스템도 ./s.makefile, SCCS/s.makefile,
./s.Make파일SCCS/s.Makefile.

초기 제안에는 매크로가 포함되었습니다. NPROC 지정하는 수단으로 확인 사용해야한다 n
필요한 작업을 수행하는 프로세스. 이 기능은 많은 사용자에게 유용한 확장 기능이지만
일반적으로 사용되지 않으며 메이크파일에 다른 중요하지 않은 확장이 필요할 수 있습니다.
통사론. 이 확장은 이 POSIX.1-2008 볼륨에서 필요하지 않지만
호환 확장으로 제공됩니다. 매크로 평행 일부 역사적 시스템에서 사용
본질적으로 동일한 의미로(단, 공통 시스템 제한인 이름을 사용하지 않음)
값). 구현자가 기존의 사용을 인식하는 것이 좋습니다. NPROC 및 / 또는
평행 에 대한 확장으로 확인.

기본 규칙은 System V를 기반으로 합니다. 참조= 가치는 c99 대신 cc
이 POSIX.1-2008 볼륨은 다음과 같은 유틸리티를 표준화하지 않기 때문입니다. cc. 그러므로,
모든 준수 응용 프로그램은 다음을 정의해야 합니다. 참조=c99 실행을 기대합니다. 있다
makefile이 ``선호하는'' 컴파일러에 도달할 수 있다는 희망으로 얻을 수 있는 이점이 없습니다.
작동을 보장할 수 없기 때문입니다. 또한 휴대용 makescript는
사용 c99 옵션을 사용하면 스크립트가 수행할 수 있는 이점이 없습니다. 그것은
여부에 대한 구현 품질 문제 c99 만큼이나 가치있다 cc.

XNUMXD덴탈의 -d ~에 대한 옵션 확인 디버깅 정보를 생성하는 데 자주 사용되지만 너무
이 POSIX.1-2008 볼륨에 추가하기 위해 정의된 구현.

XNUMXD덴탈의 -p 옵션이 전달되지 않음 메이크플래그 대부분의 역사적 구현 및 변경
이로 인해 이식성이 충분히 향상되지 않으면 많은 구현이 중단될 수 있습니다.

a로 시작하는 명령 ('+')는 다음과 같은 경우에도 실행됩니다. -n 옵션은
현재의. GNU 버전을 기반으로 확인, 의 행동 -n 때 접두사
에 적용하도록 확장되었습니다. -q-t 또한. 그러나 시스템 V
명령 실행을 강제하는 규칙 -n 대상의 명령줄에 다음이 포함된 경우
문자열 중 하나 "$(만들기)" or "${MAKE}" 채택되지 않았습니다. 이 기능
초기 제안에 등장했지만 이 접근법의 위험성은
메이크파일 부분의 다음 예:

하위 디렉토리:
cd 서브디렉토리; rm all_the_files; $(만들기)

이 경우 시스템 V 동작의 손실은 다음에 제공되는 안전에 의해 균형이 잘 잡혀 있습니다.
이 상황을 인식하지 못한 다른 makefile. 어쨌든 명령줄
접두사는 원하는 기능을 제공할 수 있습니다.

두배 더 많은 것을 허용하기 위해 BSD 시스템에서 대상 규칙 형식이 지원됩니다.
명령이 연관되도록 동일한 대상 이름을 포함하는 하나 이상의 대상 행.
이것은 SVID 또는 XPG3에 설명된 기능이 아니므로
확장자이지만 필수는 아닙니다.

기본 규칙은 기본 제공 규칙을 지정하는 텍스트와 함께 제공됩니다.
나열된 세트가 사용된 것과 동일합니다. 의도는 구현이 다음을 수행할 수 있어야 한다는 것입니다.
변경 없이 규칙을 사용하지만 영향을 미치지 않는 방식으로 규칙을 변경할 수 있습니다.
기본 동작.

이식 가능한 메이크파일을 제공하는 가장 좋은 방법은 필요한 모든 규칙을 포함하는 것입니다.
makefile 자체. 제공된 규칙은 이 문서의 다른 부분에서 제공하는 기능만 사용합니다.
POSIX.1-2008 볼륨. 기본 규칙에는 이 항목의 선택적 명령에 대한 규칙이 포함됩니다.
POSIX.1-2008 볼륨. 제공된 명령과 관련된 규칙만 필요합니다.
구현의 기본 세트.

토론의 한 지점은 이 볼륨에서 기본 규칙 목록을 삭제할지 여부였습니다.
POSIX.1-2008. 편의성을 제공하지만 애플리케이션의 이식성을 향상시키지는 않습니다.
주요 이점은 입력하려는 사용자의 이식성입니다. 확인 명령 그리고
명령 빌드 command.c 파일.

역사 메이크쉘 기능이 생략되었습니다. 일부 구현에서는
사용자는 실행에 사용할 셸을 재정의합니다. 확인 명령. 이것은 혼란스러웠습니다. ~을 위해
휴대용 확인, 쉘은 메이크파일 작성자가 선택하거나 확인
실행 중인 사용자가 아닌 명령줄 확인.

XNUMXD덴탈의 확인 대부분의 역사적 구현에서 유틸리티는 다음의 전제 조건을 처리합니다.
대상은 왼쪽에서 오른쪽 순서이며 makefile 형식에는 이것이 필요합니다. 그것은 지원합니다
생성하는 많은 makefile에서 사용되는 표준 관용구 야크 프로그램들; 예를 들어:

푸: y.tab.o lex.o 메인.o
$(CC) $(CFLAGS) -오 $@ t.tab.o lex.o 메인.o

이 예에서 확인 임의의 순서를 선택하면 lex.o 로 만들지 않을 수 있습니다.
수정 y.tab.h. 이 관계를 더 잘 표현할 수 있는 방법이 있을 수 있지만
역사적으로 널리 사용됨. 필수 구성 요소를 병렬로 업데이트하려는 구현
에 대한 명시적 확장이 필요합니다. 확인 또는 이를 달성하기 위한 메이크파일 형식은 다음과 같습니다.
이전에 설명했습니다.

대상 규칙에 대한 새 항목을 결정하는 알고리즘은 부분적으로 지정되지 않습니다. 일부
역사적인 확인s는 명령 모음 내에서 공백, 빈 또는 주석 행을 허용합니다.
선행으로 표시 문자. 적합한 메이크파일은 각 명령이 다음과 같은지 확인해야 합니다.
로 시작 , 그러나 구현은 공백, 비어 있음 및 주석을 무시할 수 있습니다.
새 항목의 시작을 트리거하지 않고 줄.

ASYNCHRONOUS EVENTS 섹션에는 SIGTERM 및 SIGHUP이 포함되어 있습니다.
전통적인 SIGINT 및 SIGQUIT, 지시하지 않는 한 현재 대상을 제거하십시오.
SIGTERM 및 SIGHUP이 이전에 정리된 다른 유틸리티와 병렬로 추가되었습니다.
이러한 신호의 결과로 작업을 수행합니다. 언제 확인 이외의 신호를 수신
SIGQUIT, 수신한 신호를 다시 보내어
신호를 반영하는 상태. SIGQUIT의 결과가 부분적으로 지정되지 않음
생성하는 시스템에서 core SIGQUIT 수신 시 파일, core확인
와 충돌합니다 core SIGQUIT가 실행 중이던 명령의 파일
도착했다. 주요 관심사는 손상된 파일이 업데이트될 때 최신 상태로 표시되지 않도록 하는 것이었습니다. 확인
재방송이다.

XNUMXD덴탈의 .귀중한 특수 대상이 전역적으로 모든 대상에 영향을 미치도록 확장되었습니다(아니오를 지정하여
전제 조건). 그만큼 .무시하다.조용한 허용하도록 특별 대상이 확장되었습니다.
전제 조건; 경우에 따라 오류를 끌 수 있는 것이 더 유용하다고 판단되었습니다.
또는 전체 makefile보다 대상 목록에 대해 반향합니다. 이러한 확장 확인 in
시스템 V는 BSD의 역사적 관행과 일치하도록 만들어졌습니다. 확인.

매크로는 실행할 명령 환경으로 내보내지지 않습니다. 이것은 결코 사실이 아니었다
어떤 역사적 확인 그리고 심각한 결과를 초래할 것입니다. 환경은 다음과 같습니다.
환경 확인 그 외에는 메이크플래그 에 정의된 매크로 확인 명령 줄
추가됩니다.

일부 구현은 사용하지 않습니다. 체계()에서 요구하는 대로 모든 명령줄에 대해
휴대용 메이크파일 형식; 성능 향상으로 쉘이 없는 행을 선택합니다.
직접 실행을 위한 메타문자 집행하다(). 요구 사항은 없습니다 체계() BE
구체적으로 사용되지만 동일한 결과가 달성될 뿐입니다. 메타문자
일반적으로 직접 우회하는 데 사용 집행하다() 실행은 다음 중 하나였습니다.

= | ^ ( ) ; & < > * ? [ ] : $ ` ' " \ \n

일부 고급 버전의 기본값 확인 에 대한 모든 명령줄을 그룹화하는 것입니다.
단일 셸 호출을 사용하여 대상을 지정하고 실행합니다. 시스템 V 방법은 통과하는 것입니다
각 라인은 별도의 쉘에 개별적으로 있습니다. 단일 쉘 방법은 다음과 같은 장점이 있습니다.
많은 연속 라인에 대한 성능 및 요구 사항 부족. 그러나,
이 새로운 방법은 많은 역사적 메이크파일에서 이식성 문제를 일으켰습니다.
POSIX makefile의 동작은 System V의 동작과 동일하게 지정됩니다.
특별한 목표를 제시했다. .ONESHELL 에 대한 구현 확장으로 사용
대상 또는 대상 그룹에 대한 단일 셸 그룹화를 달성합니다.

초보 사용자 확인 로 명령을 시작해야 하는 역사적 필요성에 어려움을 겪었습니다.
. 차이점을 구분하기 어려운 경우가 많기 때문에 그리고
터미널이나 인쇄된 목록의 문자, 혼란스러운 버그가 발생할 수 있습니다. 초기 제안에서,
선행을 허용하여 이 문제를 해결하려는 시도가 있었습니다. 대신 문자
~의 문자. 그러나 구현자는 미묘하게 실패한 많은 makefile을 보고했습니다.
이 변경 사항을 따르는 방법이 있으며 구현하기가 어렵습니다. 확인 확실하게 할 수 있는
매크로와 명령줄을 구분합니다. 광범위한 역사적 관행이 있습니다.
선행 허용 매크로 정의 앞의 문자. 매크로 라인 강제 적용
열 1은 일부 메이크파일에 대해 중요한 역호환성 문제가 될 수 있습니다.
따라서 역사적 관행이 복원되었습니다.

Include 행을 처리하는 데 있어 상당한 차이가 있습니다.
구현. 그러나 표준이 할 수 있는 충분한 공통성이 있습니다.
기능을 이식 가능하게 사용할 수 있는 최소 요구 사항 집합을 지정합니다. 모두 다 아는
변형은 설명에서 지정되지 않은 동작으로 명시적으로 호출되었습니다.

System V 동적 종속성 기능은 포함되지 않았습니다. 다음을 지원합니다.

고양이: [이메일 보호]

그것은 확장 될 것입니다;

고양이: cat.c

이 기능은 System V의 새 버전에만 존재합니다. 확인 그리고 유용하지만
넓은 사용법. 이것은 매크로가 필수 구성 요소에 대해 두 번 확장됨을 의미합니다. makefile에서 한 번
구문 분석 시간 및 대상 업데이트 시간에 한 번.

POSIX에 메타룰을 추가하는 것을 고려했습니다. 확인. 이것은 만들 것입니다 %.영형: %.씨
같은 .co:. 이는 매우 유용하고 일부 공급업체에서 사용할 수 있지만
이것에 너무 많은 변화를 야기 확인 지원합니다. 그것은 규칙 체이닝을 도입했을 것이고
새로운 대체 규칙. 그러나 대상 이름에 대한 규칙은
'%''"' 문자. 이들은 전통적으로 메타 규칙을 구현하고 다음을 인용하는 데 사용됩니다.
각각 대상 이름. 구현자는 이러한 문자를 사용하는 것이 좋습니다.
이러한 목적으로만.

접미사 구분 문자를 아무에게나
성격. 최신 버전의 메타룰 기능 확인s는 보다 일반적인 방식으로 이 문제를 해결합니다.
이 POSIX.1-2008 볼륨은 보다 보수적인 역사적 정의를 유지하고 있습니다.

에 대한 표준 출력 형식 -p 옵션은 기본적으로
디버깅 옵션과 형식이 일반적으로 프로그램에 유용하지 않기 때문입니다. 역사적으로
구현에서 출력은 makefile 생성에 사용하기에 적합하지 않습니다. 그만큼 -p 체재
이전 구현에서 가변적이었습니다. 따라서 -p 였다
획득을 위해 일관되게 명명된 옵션을 제공하기 위해서만 확인 스크립트 디버깅
정보.

일부 역사적 구현은 접미사 목록을 지우지 않았습니다. -r.

구현 시 일부 과거 애플리케이션이 서로 혼합되었음을 인식해야 합니다.
대상_이름매크로=가치 모든 매크로가
대상이 처리되기 전에 처리됩니다. 준수하는 응용 프로그램은 수행하지 않습니다.
그러나 일부 이전 버전과의 호환성 지원이 보장될 수 있습니다.

빈 추론 규칙은 명령을 모두 생략하는 대신
초기 제안서에 설명된 대로 명령. 후자의 경우에는 전통적인 의미가 없습니다.
GNU와 같은 구현 확장을 위해 예약되어 있습니다. 확인.

미래 오시는 길


없음.

onworks.net 서비스를 사용하여 온라인에서 makeposix 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad