Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on Ago 2, 2019

makefile install 예제

누락된 종속성이 발생할 수 있는 또 다른 방법은 프로그램이 실제로 파일을 사용하지만 명령줄에서 파일이름을 사용하지 않는 경우입니다. 예를 들어 Fortran 코드를 컴파일하는 경우 현재 makepp는 포함된 파일을 검색하는 방법을 알지 못합니다. 따라서 포함된 모든 파일을 명시적으로 나열해야 합니다. 다음 makefile은 변수, 패턴 및 함수를 사용하여 모든 C 프로그램을 컴파일할 수 있습니다. 한 줄씩 살펴보겠습니다: 위의 makefiles를 다음과 같이 다시 작성할 수 있습니다. standard_defs.mk는 최상위 디렉터리에 존재하며 perl_begin 문과 perl_end 문 사이의 모든 텍스트가 perl 인터프리터에 전달됩니다. makefile의 모든 변수(자동 변수 제외)는 펄 스칼라로 액세스할 수 있습니다. perl 코드로 설정한 모든 변수는 makefile에서 액세스할 수 있습니다. 이제 생성해야 하는 각 개체 파일에 대한 명시적 규칙이 필요하지 않습니다. 프로그램에 다른 모듈을 추가하려면 OBJECTS 변수를 정의하는 한 줄만 변경하면 됩니다. 이 메이크 파일은 이제 원래의 메이크 파일보다 훨씬 더 간결합니다. 각 정보는 한 곳에서 정보를 변경하고 다른 곳에서 변경하는 것을 잊어 서 실수를 할 가능성이 없도록 한 번만 발생합니다. makepp를 사용하면 해당 디렉토리에 관련 파일을 빌드하는 별도의 메이크 파일을 각 디렉토리에 넣기만 하면 됩니다.

makefile이 빌드 명령이 다른 makefiles에있는 파일을 참조할 때 makepp는 자동으로 다른 makefiles에서 적절한 빌드 규칙을 찾습니다. 각 makefilefile의 모든 작업은 현재 디렉터리 세트로 실행되어 makefile을 포함하는 디렉토리로 실행되므로 각 makefilefile은 다른 모든 디렉터와 독립적으로 작성할 수 있습니다. 어떤 메이크 파일은 다른 메이크 파일에 대해 아무것도 알 필요가 없습니다; 그것은 심지어 다른 makefiles에서 규칙을로드 하는 makepp 말할 필요가 없습니다. 설치 단계는 Makefile에도 정의되어 있으므로 소프트웨어가 설치된 경우 구성 스크립트에 전달된 옵션 또는 구성 스크립트가 시스템에 대해 검색한 항목에 따라 변경할 수 있습니다. GNU 배포판에는 일반적으로 소스 파일이 아닌 일부 파일(예: 정보 파일 및 Autoconf, 자동 만들기, 들소 또는 Flex의 출력)이 포함되어 있습니다. 이러한 파일은 일반적으로 원본 디렉터리에 나타나므로 빌드 디렉터리가 아닌 소스 디렉터리에 항상 표시되어야 합니다. 따라서 Makefile 규칙을 업데이트하려면 업데이트 된 파일을 원본 디렉토리에 넣어야합니다. 빈 접두사는 여기에 나열된 파일을 변수 bindir에 의해 정의된 디렉터리에 설치해야 한다는 자동 확인을 알려줍니다. 바인디르, 리비르, pkglibdir 등 자동 도구로 정의된 다양한 디렉토리가 있지만, 우리 고유의 디렉토리도 정의할 수 있습니다. 위의 예에서 say_hello는 모든 프로그래밍 언어에서와 같이 함수 이름처럼 작동합니다. 이를 대상이라고 합니다. 필수 구성 조건 또는 종속성은 대상을 따릅니다.

간단히 하기 위해 이 예제에서는 필수 구성 조건을 정의하지 않았습니다. 명령 에코 “안녕하세요 세계”레시피라고합니다. 레시피는 대상을 만들기 위해 필수 구성 조건을 사용합니다. 대상, 필수 구성 조건 및 레시피가 함께 규칙을 만듭니다. *.o 와일드카드는 기존 .o 파일 또는 아직 존재하지 않지만 makepp가 읽은 모든 makefiles에서 알고있는 규칙에 의해 만들 수있는 .o 파일과 일치합니다.

Centro per un Futuro Sostenibile via Tacito, 84 00193 Roma tel. +39 06 90288228