많은 정보를 제공하지 않으므로 추측해야합니다. foo.c
, bar.c
및 baz.c
의 파일이 src/
에 있다고 가정합니다. 그리고 귀하의 메이크 파일이 부모 디렉토리 (src/
및 include/
포함)에 있고 오브젝트 파일과 실행 파일 foo
을 빌드하고자한다고 가정합니다. 이것은 충분해야합니다 :
VPATH = src
CFLAGS += -Iinclude
foo: foo.o bar.o baz.o
$(CC) $^ -o [email protected]
이것은 조잡한 메이크 파일입니다. 일단 기본에 익숙해지면 더욱 정교한 버전이 가능합니다.
편집 : 우리가 실행하기 전에 우리는 걸어 배워야
. 복잡한 디렉토리 구조를 처리 할 수있는 makefile을 작성하려면 더 간단한 makefile을 이해해야합니다. Makefile과 같은 디렉토리에있는 모든 파일, 소스 파일 (foo.c
) 및 헤더 파일 (foo.h
)로 시작하십시오. 그런 다음 위의 makefile의 처음 두 행을 생략 할 수 있습니다. src/
을 만들기 전에 메이크 파일을 이해했는지 확인하고 VPATH = src
이 필요하다면 include/
및 CFLAGS += -Iinclude
을 소개하기 전에 이해해야합니다. 이 단계를 건너 뛰려고하면 더 복잡한 경우 성공할 수 없습니다.
'-Wall'을'CFLAGS' 라인에 추가 할 것을 제안합니다. 그리고 당신은 또한'-g'를 덧붙일 수도 있습니다. –
베타, 고맙습니다. 답을 구할 수는 있습니다.)하지만 컴파일을 할 때 CFLAGS가 지정하고 VPATH가있는 이유를 자세히 알지 못합니다. 어렵지 않다면 더 자세히 설명 할 수 있습니다. 나는 로봇 프로젝트를 수집한다. 나는 폴더 src와 폴더 include를 가지고 있는데, 아래에는'radio.h'라는 파일 시스템 폴더와'system.h' 파일의 폴더 헤더가 포함되어있다. 파일'main.c','radio.c','system.c'을 가진 폴더 src가 있습니다. 나는'main.c'에'#include'또는'#include
user2759544
나는 documention makefile을 읽었지만 찾지 못했다. ( – user2759544