2011-02-08 2 views
0

다음 디렉토리가있는 C 프로젝트에 대한 간단한 makefile을 만들고 싶습니다.간단한 메이크 파일을 만드는 디렉토리 문제

-Project 
    - src 
    - a.c 
    - b.c 
    - main.c 
    - headers 
    - a.h 
    - b.h 
    - build 
    - makefile 
    - project.exe 

그리고 여기 제가 한 메이크 파일입니다.

project: a.o b.o main.o 
    cc -o sesion0 a.o b.o main.o 
a.o: ../src/a.c ../headers/a.h 
b.o: ../src/b.c ../headers/b.h 
main.o: ../src/main.c ../headers/a.h ../headers/b.h 

하지만이 주문을 실행할 때, 그것은 입력 파일이 아니라고 또한 파일이나 디렉토리 a.o, b.o 및 main.o를 존재하지 않는 것을 저에게 그리고 말해. 끝 부분에이 오류가 표시됩니다.

make: *** [project] Error 1 

왜 이런 일이 발생했는지 또는 오류가있는 곳을 아는 사람이 있습니까? 나는 makefile에서 디렉토리를 관리하는 방법을 잘 모른다.

감사합니다.

답변

2

Make에는 x.c와 x.o를 만들기위한 규칙이 있지만 ../src/x.c에는없는 규칙이 있습니다. 즉, 입출력 경로는 동일해야하며 파일 확장명 만 다릅니다. anwser 맥심에 대한

VPATH = ../src:../headers 
a.o: a.c a.h 
b.o: b.c b.h 
main.o: main.c a.h b.h 
+0

감사하지만 나에게 또 다른 오류를 보여줍니다 알고

당신은 VPATH for directory search를 사용하여 문제를 해결할 수 있습니다. 이것은 오류입니다 : 'cc -c -o ao ../src/ac ../src/ac:1:21 : 오류 : ah : 파일 o 디렉토리가 없습니다. make : ** * [ao] Error 1' 이것이 일어나는 이유를 알고 있습니까? ../headers 디렉토리의 a.h 파일을 찾지 못하는 것 같습니다. – Peter

+0

이제 컴파일러 포함 경로를 추가해야합니다. Makefile에'CPPFLAGS = -I ../ headers'를 추가하십시오. –

+0

@MaximEgorushkin 다음 질문은 여러 대상과 그 종속성을 처리 할 때 동일한 문제를 가지고 있습니까? https://stackoverflow.com/questions/30043480/make-recipe-to-prevent-rebuilding-of-non-dependent-targets# –

관련 문제