링크 ux Makefile 상세 설명?

아래 의 코드 가 여러 번 바 뀌 었 습 니 다. 기본 적 인 부분 은 말 하지 않 겠 습 니 다. 몇 가지 중점 을 두 세 요. $@ 은 목표 파일 입 니 다. $^ 는 의존 하 는 모든 목표 입 니 다. $< 의존 하 는 첫 번 째 입 니 다.
첫 번 째 명령 에 의존 하 는 $<
세 개의 원본 파일. c 를 세 개의 대상 파일 로 컴 파일 하려 면 최종 실행 가능 한 파일 로 컴 파일 하 십시오.
이 $< 는 함부로 사용 할 수 없습니다. ". c. o:" 규칙 에 맞 춰 야 합 니 다. 이 규칙 은 모든 c 가 해당 하 는 이름 에 의존 하 는. o 를 말 합 니 다. 그것 만 이 $< 전체 컴 파일 을 완성 할 수 있 습 니 다. (포장 했다 고 가정 하면 하나 라 도) 그렇지 않 으 면 정말 컴 파일 규칙 에 의존 하 는 첫 번 째 파일 입 니 다.
TARGET = main
SRC = main.c func1.c func2.c
#SRC =  func1.c func2.c main.c
OBJ = $(patsubst %.c,%.o,$(SRC))
HEADER = $(patsubst %.c,%.h,$(SRC))
CC = gcc
#$(TARGET) : $(OBJ)
#       $(CC) $(OBJ) -o $(TARGET)
#$(OBJ) : $(SRC)
#       $(CC) -c func1.h func2.h  $*.cpp -o  $@
#all : $(TARGET)


$(TARGET) : $(OBJ)
        $(CC) -o $@ $^
#$(OBJ) : $(SRC) $(HEADER)
.c.o:
#       $(CC) -c main.c
#       $(CC) -c $<
#func1.o func2.o main.o:  func1.c func2.c main.c
        gcc -c $<

CLEAN:
        rm *.o
        rm $(TARGET)

SRC = main.c func1.c func2.c
OBJ = $(patsubst %.c,%.o,$(SRC))
등가 와
OBJ = main.o func1.o func2.o
HEADER
patsubst 는 교체 용 입 니 다. 이것 은 Makefile 의 함수 입 니 다. 용법 은 C 의 함수 와 다 릅 니 다. $는 반환 값 에 해당 합 니 다. () 내 부 는 함수 이름과 매개 변수 이름 입 니 다.
make 가 만 든 명령 은 대소 문자 가 민감 하고 완전히 사용자 정의 입 니 다. 어떤 이 유 는 똑 같 습 니 다. 예 를 들 어 약속 이 저속 하기 때 문 입 니 다.
#make clean
이 예 에서 대상 파일 과. o 파일 을 삭제 하려 면
#make CLEAN
그래 야 지.
PS: 자주. o 파일 을 삭제 합 니 다. 그렇지 않 으 면 Makefile 에 대한 테스트 를 방해 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기