메이크 간단한 상담 [예약]

간단한 메이크 자습서

메이크 코드 컴파일을 구성하는 간단한 방법입니다. 이 튜토리얼도 사용 가능 무엇의 표면에 흠집하지 않습니다 확인을 하지만, 빠르고 쉽게 중간 규모의 프로젝트를위한 작은 자신의 메이크 파일을 만들 수 있도록 초보자 가이드위한 것입니다.

간단한 예

의 전형적인 메인 프로그램, 별도의 파일에 일부 기능 코드를 나타낼 것이다 다음 세 가지 파일, hellomake.c, hellofunc.c 및 hellomake.h,로 시작하자, 그리고 각각 파일을 포함한다.

hellomake.c hellofunc.c hellomake.h
#INCLUDE <hellomake.h> 

INT {) (주 
  // 다른 파일에 함수를 호출 
  ) (myPrintHelloMake; 

  창 (0); 
}
#INCLUDE <STDIO.H> 
#INCLUDE <hellomake.h> 

공극 myPrintHelloMake (보이드) { 

  의 printf ( "안녕하세요 메이크 \ n!"); 

  반환; 
}
/ * 
예는 파일 포함 
* / 

무효 myPrintHelloMake (무효);

일반적으로, 다음과 같은 명령을 실행하여 코드의이 컬렉션을 컴파일합니다 :

GCC -o hellomake hellomake.c hellofunc.c -I.

이 두 가지가 .c 파일과 이름이 실행 hellomake를 컴파일합니다. -I. 그 GCC 파일을 포함 hellomake.h의 현재 디렉토리 (.)에서 찾게됩니다 있도록 포함되어 있습니다. 메이크없이 시험에 대한 일반적인 접근 방식은 / 추가 한 특히 일단 / 디버그주기 당신이 그것을 매번 입력 할 필요가 없습니다 마지막 컴파일 명령으로 돌아갑니다 터미널에서 위쪽 화살표를 사용하는 것입니다 수정 믹스에 몇 가지 더이 .c 파일.

불행하게도, 컴파일이 접근 방식은 두 개의 낙하가 있습니다. 당신이 컴퓨터를 컴파일 명령을 잃거나 전환하는 경우 첫째, 당신은 가장 비효율적이다 처음부터 다시 입력해야합니다. 둘째, 당신은 단지 그들 모두를 매번 재 컴파일, 하나 개의 .c 파일을 변경하는 경우도 시간과 비효율적이다. 그래서, 우리가 메이크으로 무엇을 할 수 있는지 볼 시간입니다.

당신이 만들 수있는 가장 간단한 메이크 같이 보일 것입니다 :

메이크 (1)

hellomake : hellomake.c hellofunc.c 
     의 gcc -o hellomake hellomake.c hellofunc.c -I.

당신은라는 파일에이 규칙을 넣으면 메이크 또는 메이크 입력 한 다음 및 확인 은 메이크에서 그것을 쓴대로 컴파일 명령을 실행할 명령 줄에서. 참고 하게 인수없이이 파일의 첫 번째 규칙을 실행합니다. 또한, 명령이 후 첫 번째 줄에 의존하는 파일 목록을 넣어 : 만들 규칙 것을 알고 hellomake 이러한 파일 중 하나를 변경하는 경우 필요 실행할 수 있습니다. 즉시, 당신은 문제 # 1를 해결하고 마지막 컴파일 명령을 찾고, 위쪽 반복 화살표를 사용하여 피할 수 있습니다. 그러나 시스템은 여전히 최신 변경 사항을 컴파일 측면에서 효율적되지 않습니다.

주의 할 매우 중요한 것은 메이크의 GCC 명령 전에 탭 있다는 것입니다. 이 모든 명령의 시작 부분에 탭, 그리고 있어야 거기 아니라면 행복하지 않을 것입니다.

좀 더 효율적으로하기 위해, 이제 다음을 시도하자 :

메이크 2

CC = gcc가 
CFLAGS = -I. 

hellomake : hellomake.o hellofunc.o 
     $ (CC) -o hellomake hellomake.o hellofunc.o

그래서 지금 우리는 몇 가지 상수 정의했다 CCCFLAGS를 . 이들의 정보는 다음의 제품에 통신 특별한 상수 밝혀 있도록 우리가 파일 hellomake.c 및 hellofunc.c을 컴파일하는 방법. 특히, 매크로 CC는 사용하는 C 컴파일러이며, CFLAGS는 컴파일 명령에 전달하는 플래그의 목록입니다. hellomake.o 및 hellofunc.o - - 오브젝트 파일을 넣어 종속성 목록 및 규칙에서, 확인은 처음 개별적으로이 .c 버전을 컴파일하고 실행 hellomake을 구축해야한다는 점을 인식하고 있습니다.

메이크의이 양식을 사용하면 가장 작은 규모의 프로젝트에 충분하다. 포함 파일에 의존 : 그러나없는 한 가지가있다. 당신이 hellomake.h를 변경한다면, 예를 들어, 수 있도록 그들이 할 필요도 불구하고,이 .c 파일을 다시 컴파일하지 않을 것입니다. 이 문제를 해결하기 위해, 우리는 말할 필요가 만드는 모든 .c 인 파일이 특정 .H 파일에 달려있다. 우리는 간단한 규칙을 작성하고 메이크 파일에 추가하여이 작업을 수행 할 수 있습니다.

메이크 3

CC = gcc가 
CFLAGS = -I. 
DEPS = hellomake.h 

% .o 인 : %의 .c 인의 $ (DEPS) 
	$ (CC) -c -o $ @ $ <$ (CFLAGS) 

hellomake : hellomake.o hellofunc.o 
	$ (CC) -o hellomake hellomake.o hellofunc.o

또한이 먼저가 .c 파일들이 종속되는 .H 파일 설정된 매크로 DEPS를 생성한다. 그럼 우리가 .o 인 접미사로 끝나는 모든 파일에 적용되는 규칙을 정의합니다. 규칙은 .o 인 파일이 파일이 .c 버전과 DEPS 매크로에 포함 된 .H 파일에 달려 있다고 말한다. 규칙은 다음의 .o 인 파일을 생성 할 수 있다고 공통 매크로에 정의 된 컴파일러를 사용하여 .c 파일을 컴파일 할 필요가 있습니다. -c 플래그는 오브젝트 파일을 생성 말한다는 -o의 $의 @는 의 왼쪽에라는 이름의 파일에 컴파일의 출력 넣어 말한다 :$ < 종속성 목록의 첫 번째 항목 인을하고, CFLAGS 매크로는 상기와 같이 정의된다.

최종 단순화으로의 특수 매크로 사용하게 $의 @$ ^ 의 왼쪽과 오른쪽이다 : 각각 전체 컴파일 규칙이보다 일반적인 만들 수 있습니다. 아래의 예에서, 파일이 포함 된 모든 매크로 DEPS의 일환으로 표시되어야하고, 오브젝트 파일의 모든 매크로 OBJ의 일부로서 나열 될 것이다.

메이크 4

CC = gcc가 
CFLAGS = -I. 
DEPS = hellomake.h 
OBJ = hellomake.o hellofunc.o 

% .o 인 : %의 .c 인의 $ (DEPS) 
	$ (CC) -c -o $ @ $ <$ (CFLAGS) 

hellomake : $ (OBJ) 
	$ (CC) -o $ @ $ ^ $ (CFLAGS)

그래서 우리가 include 디렉토리에 우리의 .H 파일을 넣어 시작하려면, 우리의 소스 A를 src 디렉토리에서 코드 및 lib 디렉토리의 일부 지역 도서관? 또한, 우리는 어떻게 든 도처에 놀아 그 성가신 .o 인 파일을 숨길 수 있습니까? 대답은 물론 '예'입니다. 다음 메이크는 포함 LIB 디렉토리에 대한 경로를 정의하고, src 디렉토리 내에서 OBJ 하위 디렉토리에 오브젝트 파일을 배치합니다. 그것은 또한 수학 라이브러리로 포함 할 어떤 라이브러리에 정의 된 매크로가 -lm을 . 이 메이크 파일은 src 디렉토리에 위치해야합니다. 그것은 또한 당신이 입력하는 경우 소스 및 대상 디렉토리를 정리에 대한 규칙이 포함되어 있습니다 청소하기를 . .PHONY 규칙은 유지 하게 청소라는 이름의 파일에 뭔가를하고부터.

메이크 5

이디 = .. /가 포함 
CC를 = GCC 
CFLAGS = $ -I (이디) 

ODIR OBJ = 
LDIR = .. / lib에 

LIBS = -lm 

_DEPS = hellomake.h 
DEPS = $ (patsubst를의 %의 $ (이디) / %의 $ (_DEPS)) 

_OBJ = hellomake.o hellofunc.o 
OBJ = $ (patsubst는 %의 $으로 (ODIR) / %의 $ (_ OBJ)) 


$ (ODIR) / %의 O :. $ %의가 .c (DEPS) 
	$ (CC ) -c -o $ @ $ <$ (CFLAGS) 

hellomake : $ (OBJ) 
	$ (CC) -o $ @ $ ^ $ (CFLAGS) $ (LIBS) 

.PHONY : 깨끗한 

깨끗한 : 
	RM은 $의 -f (ODIR) /*.o * ~ $ 코어 (INCDIR) / * ~

그래서 지금 당신은 당신이 중소 소프트웨어 프로젝트를 관리하기 위해 수정할 수있는 완벽하게 좋은 메이크있다. 당신은 메이크 파일에 여러 규칙을 추가 할 수 있습니다; 당신도 다른 규칙을 호출 규칙을 만들 수 있습니다. 더 메이크 파일에 대한 정보와 내용은 메이크업의 기능은 체크 아웃 GNU 수동 확인 당신이 이제까지 (정말) 알고 싶어보다 더 말할 것이다.

추천

출처www.cnblogs.com/liujx2019/p/11205220.html