Makefile은 프로그램 컴파일을 자동화하기 위해 make 도구에서 사용하는 파일입니다. 효과적인 Makefile을 작성하기 위한 표준 규칙과 모범 사례는 다음과 같습니다.
target: prerequisites command
기본 규칙: Makefile의 첫 번째 대상은 기본적으로 빌드될 대상입니다.
소스 파일 컴파일하기:
CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme $(TARGET): $(OBJECTS) $(CC) -o $@ $^ %.o: %.c $(CC) $(CFLAGS) -c $
- 포니: 파일이 아닌 대상에 대해 .PHONY를 사용합니다.
.PHONY: clean clean: rm -f $(OBJECTS) $(TARGET)
- 변수: 변수를 사용하여 경로 및 옵션 관리를 단순화합니다.
CC = gcc CFLAGS = -Wall
종속성 관리: 암시적 규칙과 패턴을 사용하여 반복을 줄입니다.
자동 종속성: .o 파일에 대한 종속성을 자동으로 생성할 수 있습니다.
-include $(OBJECTS:.o=.d)전체 예시
다음은 완전한 Makefile 예제입니다:
# Variables CC = gcc CFLAGS = -Wall -g SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) TARGET = mon_programme # Règle par défaut all: $(TARGET) # Lien de l'exécutable # $@ -> $(TARGET) # $^ -> $(OBJECTS) $(TARGET): $(OBJECTS) $(CC) -o $@ $^ # Compilation des fichiers .c en .o # $ Premier element des pr %.o: %.c $(CC) $(CFLAGS) -c $좋은 습관
탭으로 들여쓰기: 규칙의 명령은 공백이 아닌 탭으로 들여쓰기해야 합니다.
주석 코드: 주석을 사용하여 Makefile의 섹션을 설명합니다.
파일 그룹화: 프로젝트에 여러 파일이 포함된 경우 해당 파일을 하위 디렉터리로 구성하고 변수를 사용하여 경로를 관리합니다.
암시적 규칙 사용: 공통 규칙을 다시 작성하지 않도록 make에 내장된 규칙을 활용하세요.
.PHONY를 사용하는 이유는 무엇입니까?
충돌 방지: 대상과 동일한 이름을 가진 파일이 존재하면 make는 대상이 최신이라고 생각하고 관련 명령을 실행하지 않습니다. .PHONY는 이를 방지합니다.
성능 개선: 가짜 대상은 항상 "해야 할 일"로 간주되어 관련 명령의 실행 속도를 향상시킬 수 있습니다.
효율성: %.o:%c를 사용하면 필요한 것만 다시 컴파일하여 최적화를 통해 이점을 얻을 수 있습니다.
실용성: 대규모 프로젝트의 경우 %.o:%c가 훨씬 더 적합합니다.
잘 구성된 Makefile은 프로젝트 관리를 더 쉽게 만들고 컴파일 오류를 방지합니다. 이러한 규칙과 모범 사례를 따르면 효율적이고 유지 관리가 가능한 Makefile을 만들 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3