> 백엔드 개발 > C++ > 외부 종속성이 있는 단일 파일 프로젝트에 대한 간단한 C Makefile을 만드는 방법은 무엇입니까?

외부 종속성이 있는 단일 파일 프로젝트에 대한 간단한 C Makefile을 만드는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-10 05:44:16
원래의
450명이 탐색했습니다.

How to Create a Simple C   Makefile for a Single-File Project with External Dependencies?

간단한 C Makefile을 만드는 방법

이 가이드는 최소한의 작업으로 C 프로젝트용 Makefile을 만드는 간단한 접근 방식을 제공합니다. dependency.

문제:

"/user/cse232에서 클래스를 가져오는 a3driver.cpp라는 단일 파일로 프로젝트에 대한 Makefile을 생성해야 합니다. /예제/example32.sequence.cpp". 목표는 a3a.exe라는 실행 파일을 생성하는 것입니다.

해결책:

1. Makefile 만들기:

프로젝트 디렉터리에 Makefile이라는 파일을 만듭니다.

2. 변수 정의:

Makefile 전체에서 사용될 변수를 정의하는 것부터 시작하세요:

CC = g++
CFLAGS = -g
LDFLAGS = -g
LDLIBS = -lstdc++ -lm
로그인 후 복사
  • CC: C 컴파일러.
  • CFLAGS: C 소스용 컴파일 플래그 파일.
  • LDFLAGS: 플래그 연결.
  • LDLIBS: 연결에 필요한 라이브러리.

3. 대상 지정:

다음으로 프로젝트의 대상을 정의합니다.

all: a3a.exe
a3a.exe: a3driver.o example32.sequence.o
a3driver.o: a3driver.cpp
example32.sequence.o: example32.sequence.cpp
로그인 후 복사
  • all은 실행 파일을 빌드할 기본 대상입니다.
  • a3a .exe가 실행 대상입니다.

4. 종속성 정의:

각 대상에 대한 종속성 정의:

  • a3a.exe는 a3driver.o 및 example32.sequence.o에 따라 다릅니다.
  • a3driver .o는 다음에 따라 달라집니다. a3driver.cpp.
  • example32.sequence.o는 example32.sequence.cpp에 따라 달라집니다.

5. 규칙 정의:

각 대상 및 해당 종속성에 대해 실행될 명령을 지정합니다.

a3driver.o:
    $(CC) $(CFLAGS) -c a3driver.cpp

example32.sequence.o:
    $(CC) $(CFLAGS) -c example32.sequence.cpp

a3a.exe: a3driver.o example32.sequence.o
    $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o $(LDLIBS)
로그인 후 복사
  • 이러한 규칙은 소스 파일을 컴파일하고 링크하여 실행 가능합니다.

6. Clean 대상 정의(선택 사항):

Clean 대상을 정의하여 모든 빌드 아티팩트를 제거할 수도 있습니다:

clean:
    rm -f a3driver.o example32.sequence.o a3a.exe
로그인 후 복사

7. Makefile 실행:

프로젝트를 빌드하려면 명령줄에서 make를 실행하세요. 이렇게 하면 a3a.exe 실행 파일이 생성됩니다.

참고:

Unix 기반 시스템은 실행 파일에 파일 확장자를 사용하지 않으므로 a3a.exe 대상에는 Makefile의 확장자입니다.

위 내용은 외부 종속성이 있는 단일 파일 프로젝트에 대한 간단한 C Makefile을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿