컴파일러의 객체 파일을 소스 파일과 다른 폴더에 배치하고 싶습니다. 내 소스 코드가 빌드되는 방식과 동일한 폴더 구조를 사용할 때 작동하게 만들었지 만,이 방법은 내가 찾고있는 해결책이 아닙니다.별도의 폴더에 객체 및 종속 파일을 자동으로 배치하기위한 Makefile
출처 :
내가 선호하는 것은 다음과 같다
는src/main.cpp
src/myClass/myClass.cpp
대상 :
obj/main.o
obj/myClass.o
종속성
dep/main.d
dep/main.d
내가 지금까지 가지고하면 다음이다,
VARIABLES 여기
$(OBJLIST)=obj/main.o obj/myClass.o
$(SRCDIR)=src
$(OBJDIR)=obj
LINKER
$(PROJECT): $(OBJLIST)
$(CXX) $(OBJLIST) $(LIBS) -o [email protected]
컴파일러 및
이 작동하고 무엇을 내 문제
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT 1_obj/main.o 0_src/main.cpp -o 2_dep/main.dep
$(OBJDIR)/%.o: $(SRCDIR)/myClass/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT 1_obj/myClass.o 0_src/myClass/myClass.cpp -o 2_dep/myClass.dep
그것은 어떻게 든 SRCDIRS
./
./myClass
그래서 나는이 두 가능성을 일반화를 희망 나는 $(OBJDIR)/%.o: $(SRCDIR)/$(SRCDIRS)/%.cpp
@mkdir -p $(DEPDIR) $(OBJDIR)
$(CXX) $(CPPFLAGS) -c $< -o [email protected]
$(CXX) $(CPPFLAGS) -MM -MT [email protected] @< -o $(DEPDIR)/$(notdir $(basename $<).dep)
처럼 뭔가 컴파일 정의를 병합 할 수있는 희망하지만 : 14,또한 포함라는 SRCDIRS 객체가 솔기 SRCDIRS를 통해 반복하지 않으며 일치하는 항목이 없는지 확인합니다.
일반적인 방법은'.d' 파일을 makefile에 포함시키는 것입니다. –
이것은 실제로 내 문제는 아니지만, 나는 자동으로 o- 파일을 다른 폴더에 넣을 수있는 방법을 알고 싶습니다. 그러나 .cpp 파일의 전체 폴더 구조를 다시 작성하지 않아도됩니다. 따라서 모든 폴더와 하위 폴더에서 모든 소스 파일을 가져 와서 컴파일하는 동안 o- 파일을 단일 폴더에 저장하십시오. – Lucian