제3 과 Makefile 파일 제작 (상)
3433 단어 makefile
앞의 과정 은 gcc 컴 파일 과정 부터 실천 까지 설명 하 였 습 니 다. 여러분 은 이러한 절차 에서 컴 파일 을 간소화 할 수 있 지만 매개 변수 가 많 고 프로젝트 에서 파일 의 수량 이 많은 원인 으로 인해 오류 가 발생 할 수 있 습 니 다. 심지어 이 컴 파일 에 많은 시간 을 낭비 할 수 있 습 니 다. 이 를 위해 Liux 시스템 에 도 이 도구 가 있 습 니 다. Makefile.
2. 원리:
사실 본질 Makefile 파일 (보통 대문자 M) 은 셸 파일 이 지정 한 규칙 을 통 해 파일 을 컴 파일 하 는 것 입 니 다.지식 포 인 트 는 다음 과 같다.
Makefile 도 구 는 규칙 을 통 해 명령 을 수행 합 니 다. 일반적으로 매크로 정의 와 명령 으로 나 뉜 다.간단 한 매크로 정 의 는 마지막 설명 에서 명령 형식 을 먼저 설명 합 니 다.
target ... : prerequisites ...
command
그 중에서 target 은 대상 파일 입 니 다. o 파일 일 수도 있 고 실행 가능 한 파일 일 수도 있 습 니 다.
prerequisites 는 target 을 만 드 는 데 필요 한 의존 파일 로 코드 파일 일 수도 있 고 대상 파일 일 수도 있 습 니 다.
command 는 Makefile 이 실행 하 는 명령 입 니 다. 여기 서 감사 최. 의 알림 을 잊 어 버 렸 습 니 다. Tab 키 를 켜 고 시작 한 후에 입력 해 야 합 니 다. 뒤에 대답 하 다 도 있 습 니 다.
본문 은 Makefile 도구 의 사용 을 설명 합 니 다.
3. 실천:
이 수업 에 서 는 지난 시간 에 있 었 던 파일 calc. c, calc. h, calcmain. c3 개의 파일 몰라요. 을 사용 하여 다른 파일 을 비우 고 Makefile 파일 을 만 듭 니 다. 절 차 는 다음 과 같 습 니 다.
1 > Makefile 파일 을 만 들 고 다음 내용 을 입력 하 십시오.
calc:calc.o calcmain.o
gcc -Wall calc.o calcmain.o -o calc
calcmain.o:calcmain.c
gcc -Wall -c calcmain.c -o calcmain.o
calc.o:calc.c
gcc -Wall -c calc.c -o calc.o
.PHONY:clean
clean: rm calc.o calcmain.o calc
위의 코드 중 첫 번 째 줄:
calc:calc.o calcmain.o:calc target; calc.o calcmain.o calc ;
gcc -Wall calc.o calcmain.o -o calc: ;
calcmain.o:calcmain.c:calcmain.o calcmain.c , : calcmain.c , make calcmain.o make calc
gcc -Wall -c calcmain.c -o calcmain.o: ;
clean , :
.PHONY:clean
2 > 현재 이 Makefile 파일 을 만 들 었 습 니 다. 명령 make 를 입력 하면 컴 파일 작업 을 완성 할 수 있 습 니 다.
make
생 성 된 파일 을 삭제 하려 면:
make clean
calcmain. c 원본 파일 만 수정 하면 calcmain. o 파일 만 생 성 되 고 실행 가능 한 파일 로 연결 되 어 다음 과 같이 실 행 됩 니 다.
make clacmain.o
make calc
이렇게 하면 프로젝트 파일 이 많 을 때 많은 시간 을 절약 할 수 있 습 니 다!이 명령 을 두 드 리 면 시원 하 겠 지, 하하...
3 > 세심 한 독자 들 은 Makefile 이 셸 파일 이 라 고 생각 할 수 있 습 니 다. 그 내용 이 여러 번 발생 하 는 문 제 를 변수 로 대체 할 수 없습니다. 이 문 제 는 정말 좋 습 니 다. 사실은 이것 이 바로 다음 에 말 하 는 부분 입 니 다.
Makefile 파일 첫 줄 의 calc: calc. o calcmain. o 뒤에 있 는 대상 파일 에 변 수 를 사용 하면 유지 보 수 를 줄 일 수 있 지 않 습 니까? 실행 가능 한 파일 도 변수 로 교체 해도 되 지 않 습 니까? 이 두 가지 문 제 는 현재 해결 되 었 습 니 다. 새 버 전의 Makefile 파일 은 다음 과 같 습 니 다.
EXE=calc
OBJECTS=calcmain.o calc.o
$(EXE):$(OBJECTS)
gcc -Wall $^ -o $EXE
calcmain.o:calcmain.c
gcc -Wall -c $< -o $@
calc.o:calc.c
gcc -Wall -c $< -o $@
clean:
rm -f $(EXE) $(OBJECTS)
$^ 와 같은 미리 정 의 된 변 수 를 사용 하면 모든 의존 파일 입 니 다. $<의존 하 는 첫 번 째 파일; $@현재 target 대상 입 니 다.이렇게 하면 파일 이 비교적 많 을 때 유지 하기 가 비교적 쉽다.
이 수업 은 여기까지 입 니 다. 예 를 들 어 미리 정 의 된 변 수 는 인터넷 에서 찾 아 볼 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
더 이상 Makefile을 사용하지 않습니다! 대신 나는 bake-cli를 사용합니다bake-cli에 대해 알기 전에 많은 makefile을 수행하고 있습니다. 구식이고 쉽게 실행할 작업을 정의할 수 있기 때문입니다! 그리고 훌륭합니다. 그런 다음 패브릭을 찾아 호출합니다. 오 마이 굿! 나는 :l...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.