GNU - makefile (2) Makefile 파일 이름, include, make 작업 방식
1921 단어 makefile
파일 이름
make [-f|--file] [filename] make - f mk1 mk1 은 Makefile 의 정 의 를 포함 하고 있 습 니 다.
include 키워드
C 언어 와 유사 한 효과.포 함 된 파일 의 내용 을 현재 위치 에 그대로 놓 습 니 다.
include a b c d e ... abcde 는 파일 이름 으로 빈 칸 이나 tab 로 구분 합 니 다.메모: include 전에 tab 를 사용 하지 마 십시오. tab 는 명령 이 며 셸 에서 실 행 됩 니 다.
C / C + + 의 \ # include 명령 처럼.파일 이 절대 경로 나 상대 경 로 를 지정 하지 않 으 면 make 는 현재 디 렉 터 리 에서 먼저 찾 습 니 다. 현재 디 렉 터 리 에서 찾 지 못 하면 make 는 아래 디 렉 터 리 에서 찾 습 니 다.
1. make 가 실 행 될 때 '- I' 또는 '- include - dir' 인자 가 있 으 면 make 는 이 매개 변수 가 지정 한 디 렉 터 리 에서 찾 습 니 다.
make -I . 현재 디 렉 터 리 에서 찾기 지정 2. 디 렉 터 리 < prefix > / include (일반적으로: / usr / local / bin 또는 / usr / include) 가 존재 하면 make 도 찾 습 니 다.
이런 방식 은 일반적으로 쓰 지 않 겠 지.외부의 항상 통 제 는 비교적 번거롭다.
3、-include filename 앞에서 - 오 류 를 무시 하 는 것 을 표시 합 니 다. 파일 이 존재 하지 않 으 면 알림 도 하지 않 고 무시 합 니 다.
makefile 예:
#include , 。
#include a.mkf
mymk = a.mkf
-include $(mymk)
edit : $(objs)
cc -o edit $(objs)
main.o:
kbd.o:
command.o:
display.o:
insert.o:
search.o:
utils.o:
files.o:
.PHONY : clean
clean :
-rm edit $(objs)
a.mkf objs = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
make 의 작업 방식:
GNU make 작업 시 실행 절차 입력: (다른 make 도 비슷 하 다 고 생각 합 니 다)
1. 모든 Makefile 을 읽 습 니 다. 2. include 의 다른 Makefile 을 읽 습 니 다. 3. 파일 의 변 수 를 초기 화 합 니 다. 4. 은밀 한 규칙 을 유도 하고 모든 규칙 을 분석한다. 5. 모든 대상 파일 에 의존 관계 체인 을 만 듭 니 다. 6. 의존 관계 에 따라 어떤 목표 가 다시 생 성 되 어야 하 는 지 결정 합 니 다. 7. 생 성 명령 을 집행 합 니 다.
1 - 5 단 계 는 1 단계, 6 - 7 은 2 단계 다.첫 번 째 단계 에서 정 의 된 변수 가 사용 되면 make 는 사용 하 는 위치 에 펼 쳐 집 니 다.그러나 make 는 완전히 바로 전개 되 지 않 습 니 다. make 는 지연 전술 을 사용 합 니 다. 만약 에 변수 가 의존 관계 의 규칙 에 나타 나 면 이 의존 이 사용 하기 로 결정 되 어야 변 수 는 그 내부 에서 전 개 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.