>  기사  >  운영 및 유지보수  >  Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.

Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.

WBOY
WBOY앞으로
2022-01-24 17:11:361937검색

이 기사에서는 Linux의 자동 프로젝트 구성 도구를 소개합니다. 실제로는 특정 기능을 작동하기 위해 파일의 코드에만 의존할 수 없습니다. 이때 여러 섹션을 결합하고 구현해야 합니다. 최종 기능을 달성하기 위해 프로젝트와 모든 모듈을 패키지화하고 결합하여 구축합니다. 그것이 모두에게 도움이 되기를 바랍니다.

Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.

Makefile

Makefile은 프로젝트의 빌드 규칙 프로세스를 기록하는 텍스트 파일입니다. 직장에서 메이크파일을 작성할 수 있는지 여부는 개인이 대규모 프로젝트를 완료할 수 있는지 여부를 한쪽에서 보여줍니다. 동시에 프로젝트의 소스 파일은 유형에 따라 여러 디렉터리에 배치되지 않습니다. , 함수 및 모듈 Makefile 어떤 파일을 먼저 컴파일해야 하는지, 어떤 파일을 나중에 컴파일해야 하는지, 어떤 파일을 다시 컴파일해야 하는지 등을 지정하는 일련의 규칙이 정의되어 있으며 훨씬 더 복잡한 기능 작업을 수행할 수 있습니다. 그것은 "자동 컴파일"입니다. 일단 작성되면 단 하나의 make 명령만 필요하며 전체 프로젝트가 완전히 자동으로 컴파일 및 번역되므로 소프트웨어 개발 효율성이 크게 향상됩니다.

make

make는 makefile의 명령을 해석하는 명령 도구입니다. 일반적으로 Delphi의 make, Visual C++의 nmake 및 Linux의 GNU make와 같은 대부분의 IDE에는 이 명령이 있습니다. makefile이 엔지니어링 분야의 컴파일 방법이 되었음을 알 수 있습니다. Make는 명령이고 makefile은 프로젝트의 자동화된 구성을 완료하는 데 함께 사용됩니다.


작업 원리

Makefile에서는 다양한 파일 간의 종속성이 형성됩니다. 예를 들어 code.o를 기반으로 링크를 통해 code.exe가 생성되고, code.s를 기반으로 code.o가 생성됩니다. 어셈블리로 구성되어 있으며, code.s는 code.i를 기반으로 컴파일하여 생성되고, code.i는 code.c를 기반으로 전처리가 완료된 후 생성되며, 소스는 계층별로 검색됩니다. 그 규칙은 플래시백 방식을 사용하여 첫 번째 파일을 마지막으로 완성된 파일로 처리합니다. 현재 파일이 생성되지 않은 경우 종속성 및 상호 생성 방식을 통해 계층별로 고급화되고 최종적으로 모든 파일의 구성이 완료됩니다.


DependencyA:B A는 B

종속성 방법gcc 옵션 + B -o +A A는 처리 후 B가 생성한 파일입니다

프로젝트 정리 프로젝트를 정리해야 합니다. clean과 마찬가지로 첫 번째 대상 파일과 직접 또는 간접적으로 연결되지 않은 경우 이후에 정의된 명령은 자동으로 실행되지 않습니다. 그러나 make 실행을 표시할 수 있습니다. 즉, "make clean" 명령은 재컴파일을 위해 모든 대상 파일을 지우는 데 사용됩니다. 그러나 일반적으로 깨끗한 대상 파일의 경우 의사 대상으로 설정하고 .PHONY로 수정합니다. 의사 대상의 특징은 항상

에 의해 실행된다는 것입니다.


Principlemake는 현재 디렉터리에서 "Makefile" 또는 "makefile"이라는 파일을 찾습니다.

찾으면 파일 내용 중 첫 번째 파일을 찾아 이 파일을 최종 대상 파일로 사용합니다.

파일이 현재 존재하지 않거나 파일의 종속 파일의 수정 시간이 현재 파일보다 최신인 경우 나중에 정의된 명령을 실행하여 현재 파일을 생성합니다.

파일의 종속 파일이 없으면 최종 소스 파일을 찾을 때까지 이 종속 파일에 대해 2단계와 3단계를 진행합니다.

물론 C 파일과 H 파일이 존재하므로 make는 . o 파일을 만들고 .o 파일을 사용하여 파일을 실행하는 make의 최종 작업을 선언합니다.

이것은 전체 make의 종속성입니다. Make는 첫 번째 대상 파일이 최종적으로 컴파일될 때까지 계층별로 파일 종속성을 찾습니다.

검색 프로세스 중에 마지막 종속 파일을 찾을 수 없는 등의 오류가 발생하면 make가 직접 종료되고 오류를 보고합니다. 그러나 정의된 명령에 오류가 있거나 컴파일에 실패하면 make가 실행되지 않습니다. 다. 이유.

make는 파일 종속성에만 관심을 가집니다. 즉, 종속성을 찾은 후에도 콜론 뒤의 파일이 여전히 없으면 죄송합니다. 작동하지 않습니다.

make는 매번 생성 시 Makefile에서 첫 번째 대상 객체만 찾아 생성 후 종료됩니다(두 번째 객체는 생성되지 않음)

.PHONY: clean

clear:

rm -rf $( obj)

【보충】


1. 사전 정의된 변수 사용: [$@ ], [ $^], [ $

$@을 바꿀 수 있습니다. 대상 개체를 의미합니다.

$^: 모든 종속 개체를 나타냅니다.

&<:>

2를 나타냅니다. $ (와일드카드 ./.c) 현재 디렉터리에서 .c로 끝나는 모든 파일의 파일 이름을 가져옵니다. src=$(wildcard ./.c) 코드: $ (str)

3. $ (patsubst %.c, %.o,$(str))은 str 변수의 .c 파일을 .o로 바꾸는 것을 의미합니다. 그런 다음 obj 변수에 저장됩니다.

4. 의사 객체: 대상 객체가 외부 파일과 관련이 없다고 선언한다는 것은 객체가 최신인지 여부에 관계없이 매번 재생성되어야 함을 의미하며, 외부가 존재할 수 있는지 여부에 관계없이 명령문은 다음과 같아야 합니다. 매번 [.PHONY: ]

실행됩니다.

5. 프로그램의 컴파일 프로세스: 일반적으로 전처리, 컴파일, 어셈블리 및 링크가 포함되지만 실제 프로젝트 구성에서는 컴파일과 링크의 두 단계로 나뉩니다. 이 방법의 장점은 .c 파일 하나만 수정하면 이전에 모든 .c 파일을 직접 컴파일하여 실행 프로그램을 생성하는 과정에 비해 모든 .c 파일을 다시 컴파일하여 실행 프로그램을 생성해야 하는 점에 비해 매우 비효율적이라는 점입니다. , 따라서 작업은 두 단계로 나누어집니다. 먼저 각 .c가 자체 .o를 생성한 다음 모든 .o를 함께 연결합니다. .c가 변경되면 이 .c만 생성하면 됩니다. 프로그램에 지정된 모듈.

예 : 일반 Makefile

Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.

Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.

example 2. 사전 정의 된 makefile 연관 추천을 사용하십시오 : "linux 비디오 자습서"

위 내용은 Linux 프로젝트 자동화 구성 도구 Makefile make를 마스터해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제