2013-09-23 4 views
0

makefile을 사용하여 src 폴더와 include로 구성된 프로젝트를 빌드하는 방법을 알려주십시오. C.에 대한 프로젝트 src 폴더에 세 개의 파일이 있습니다. main.c test.c foo.c와 폴더 시스템에 폴더가 있습니다. file : test.h 및 foo.h 쓰고 싶습니다. 예를 들어 main.c에서 #include는 시스템이 폴더 include에있는 위치입니다.멀티 디렉토리 메이크 파일

예를 들어 이해하기 힘든 메이크 파일을주세요. 답변 해 주셔서 감사합니다.

답변

1

많은 정보를 제공하지 않으므로 추측해야합니다. foo.c, bar.cbaz.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을 소개하기 전에 이해해야합니다. 이 단계를 건너 뛰려고하면 더 복잡한 경우 성공할 수 없습니다.

+0

'-Wall'을'CFLAGS' 라인에 추가 할 것을 제안합니다. 그리고 당신은 또한'-g'를 덧붙일 수도 있습니다. –

+0

베타, 고맙습니다. 답을 구할 수는 있습니다.)하지만 컴파일을 할 때 CFLAGS가 지정하고 VPATH가있는 이유를 자세히 알지 못합니다. 어렵지 않다면 더 자세히 설명 할 수 있습니다. 나는 로봇 프로젝트를 수집한다. 나는 폴더 src와 폴더 include를 가지고 있는데, 아래에는'radio.h'라는 파일 시스템 폴더와'system.h' 파일의 폴더 헤더가 포함되어있다. 파일'main.c','radio.c','system.c'을 가진 폴더 src가 있습니다. 나는'main.c'에'#include '또는'#include

user2759544

+0

나는 documention makefile을 읽었지만 찾지 못했다. ( – user2759544

관련 문제