makefile wildcard 예제

패턴 규칙을 사용하는 경우 동일한 파일을 생성할 수 있는 두 가지 규칙이 있는 경우는 드물지 않습니다. 두 규칙이 모두 패턴 규칙인 경우 makefile의 나중에 발생하는 규칙이 실제로 사용됩니다. 한 규칙이 패턴 규칙이고 다른 규칙이 명시적 규칙(대상 파일의 이름을 명시적으로 지정하는 규칙)인 경우 명시적 규칙이 사용됩니다. 이것은 종종 동일한 명령으로 대부분의 모듈을 컴파일하려는 경우 유용하지만이 makefile 조각에 표시된 것처럼 약간 다른 컴파일 옵션이 필요한 모듈이 있습니다 : 가짜 대상은 makefiles에서 매우 일반적입니다. 거의 모든 makefiles에서 첫 번째 대상은 가짜 대상입니다. 이것은 일반적으로 makefiles작성 되는 방법, 그리고 그것은 확실히 일을 할 수 있는 가장 간단한 방법. 그러나 리눅스 컴퓨터와 Solaris 컴퓨터에서 프로그램을 컴파일해야 한다고 가정해 보세요. 물론 두 컴퓨터의 바이너리는 호환되지 않습니다. 전통적인 메이크와는 달리, makepp는 마지막 편집이 리눅스에 있고 현재 편집이 Solaris에 있는 경우 모든 것을 다시 편집할 필요가 있다는 것을 알 만큼 똑똑합니다. makepp를 사용하면 해당 디렉토리에 관련 파일을 빌드하는 별도의 메이크 파일을 각 디렉토리에 넣기만 하면 됩니다. makefile이 빌드 명령이 다른 makefiles에있는 파일을 참조할 때 makepp는 자동으로 다른 makefiles에서 적절한 빌드 규칙을 찾습니다. 각 makefilefile의 모든 작업은 현재 디렉터리 세트로 실행되어 makefile을 포함하는 디렉토리로 실행되므로 각 makefilefile은 다른 모든 디렉터와 독립적으로 작성할 수 있습니다. 어떤 메이크 파일은 다른 메이크 파일에 대해 아무것도 알 필요가 없습니다; 그것은 심지어 다른 makefiles에서 규칙을로드 하는 makepp 말할 필요가 없습니다.

관련 문제는 여러 가지 옵션을 통해 프로그램을 빌드하는 경우입니다. 예를 들어 일반적으로 최적화로 프로그램을 컴파일한다고 가정해 보겠습니다. <a href="t_디버깅.html"다음(메이크 파일 디버깅)</a | <a href="t_functions.html"이전(함수 및 변수)</a <br <!– $Id: makepp_tutorial.pod, v 1.3 2003/07/15 00:50:38 그홀트 익스펙트 $ – <!– 생성: 금 8 월 25 23:04:23 PDT 2000 — <!– hhmts 시작 — 마지막 수정: 화 12 월 26 21:08:53 PST 2000 <!– hhmts 끝 — </body </html <! DOCTYPE HTML PUBLIC -//IETF//DTD HTML/EN" <머리 <제목 </제목에 있는 것은 makefile</title</head 패턴 규칙 및 자동 변수를 사용하여, 우리는 아마 이와 같은 간단한 프로그램에 대한 우리의 makefile을 다시 작성할 것입니다: 이 예에서는 처음에 우리는 공백으로 시작합니다. 새로운 디렉토리 솔라리스. (물론 공백일 필요는 없으며, 두 번째로 메이크를 실행하는 것은 아닙니다.) Makepp는 이 디렉토리에서 실행되며, 거기에 메이크 파일이 없는 것을 볼 수 있습니다. 그러나 저장소에 makefile이 있으므로 저장소에서 하나에 연결하고 읽습니다. .c 파일을 .o 파일로 변환하는 makefile의 패턴 규칙에 따라 makepp는 리포지토리에서 필요한 모든 .c 파일을 연결하고 solaris 하위 디렉터리에서 컴파일 명령을 실행합니다. 따라서 .o 파일은 이제 최상위 디렉터리가 아닌 solaris 하위 디렉터리에 배치됩니다. 빌드 명령이 완료되면 리포지토리에서 연결된 모든 파일이 삭제되므로 solaris 하위 디렉터리는 Solaris의 이진 파일만 포함합니다.

리포지토리에 있는 모든 .o 파일은 수정되지 않으므로 리눅스 컴퓨터로 돌아가 makepp를 다시 실행할 때 대부분의 프로그램을 다시 컴파일할 필요가 없습니다. % 와일드 카드를 사용하여 쉽게 표현되지 않는 패턴으로 무언가를하고 싶다면 makepp에는 읽기가 다소 어렵지만 상당히 강력한 다른 구문이 있습니다.