>백엔드 개발 >C++ >Makefile 이해(C 언어의 예)

Makefile 이해(C 언어의 예)

王林
王林원래의
2024-07-17 01:18:02947검색

Comprendre le Makefile (Exemple avec langage C).

Makefile은 프로그램 컴파일을 자동화하기 위해 make 도구에서 사용하는 파일입니다. 효과적인 Makefile을 작성하기 위한 표준 규칙과 모범 사례는 다음과 같습니다.

Makefile의 기본 구조

  1. 타겟: 빌드하려는 것(예: 실행 파일)
  2. 전제 조건: 타겟을 빌드하는 데 필요한 파일(예: 소스 파일)
  3. 규칙: 대상을 생성하기 위해 실행하는 명령입니다.

간단한 예

target: prerequisites
    command

표준 규칙

  1. 기본 규칙: Makefile의 첫 번째 대상은 기본적으로 빌드되는 대상입니다.

  2. 소스 파일 컴파일:

    • 컴파일러와 옵션에 변수를 사용하세요.
    • 예:
   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 $< -o $@
  1. Phonies: 파일이 아닌 대상에 .PHONY를 사용합니다.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. 변수: 변수를 사용하여 경로 및 옵션 관리를 단순화합니다.
   CC = gcc
   CFLAGS = -Wall
  1. 종속성 관리: 암시적 규칙과 패턴을 사용하여 반복을 줄입니다.

  2. 자동 종속성: .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 $< -o $@

# Déclaration des cibles phony
.PHONY: all clean fclean re

# Nettoyage des fichiers objets
clean:
    rm -f $(OBJECTS)

# Nettoyage complet (fichiers objets et exécutable)
fclean: clean
    rm -f $(TARGET)

# Refaire la compilation
re: fclean all

모범 사례

  1. 탭으로 들여쓰기: 규칙의 명령은 공백이 아닌 탭으로 들여쓰기해야 합니다.

  2. 주석 코드: 주석을 사용하여 Makefile의 섹션을 설명합니다.

  3. 파일 그룹화: 프로젝트에 여러 파일이 포함된 경우 해당 파일을 하위 디렉터리로 정리하고 변수를 사용하여 경로를 관리하세요.

  4. 암시적 규칙 사용: 공통 규칙을 다시 작성하지 않도록 make에 내장된 규칙을 활용하세요.

.PHONY를 사용하는 이유는 무엇입니까?

  • 충돌 방지: 대상과 동일한 이름을 가진 파일이 존재하는 경우 make는 대상이 최신이라고 생각하고 관련 명령을 실행하지 않습니다. .PHONY는 이를 방지합니다.

  • 향상된 성능:위조 대상은 항상 "해야 할 일"로 간주되어 관련 명령의 실행 속도를 향상시킬 수 있습니다.

컴파일에 %.o:%c를 사용하는 이유는 무엇입니까?

  • 효율성: %.o:%c를 사용하면 필요한 것만 다시 컴파일하는 최적화의 이점을 얻을 수 있습니다.

  • 실용성: 대규모 프로젝트의 경우 %.o:%c가 훨씬 더 적합합니다.

결론

잘 구성된 Makefile은 프로젝트 관리를 더 쉽게 만들고 컴파일 오류를 방지합니다. 이러한 규칙과 모범 사례를 따르면 효율적이고 유지 관리가 가능한 Makefile을 만들 수 있습니다.

위 내용은 Makefile 이해(C 언어의 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.