"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Makefile 이해(C 언어의 예)

Makefile 이해(C 언어의 예)

2024-07-31에 게시됨
검색:231

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 $



  1. 포니: 파일이 아닌 대상에 대해 .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 $



좋은 습관

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

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

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

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

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

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

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

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

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

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

결론

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

릴리스 선언문 이 글은 https://dev.to/ashcript/comprendre-le-makefile-exemple-avec-le-langage-c-47n9에서 복제되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3