工程中包含了两个子目录,include和source,分别存放了头文件和源文件,头文件和源文件都包含多种类型,头文件包含了.h和.hpp,源文件包含了.cc和.cpp。在这种情况下,Makefile应该怎么组织呢?
|——————/include/ .h .hpp
|
|——————/source/ .cc .cpp
|
|——————Makefile
我使用了比较笨的方法,将.cc和.cpp分别编译成.o,再将.o编译成可执行文件。
SOURCE_CC = $(wildcard ./source/*.cc)
SOURCE_CPP = $(wildcard ./source/*.cpp)
OBJS_CC = $(patsubst %.cc, %.o, $(SOURCE_CC))
OBJS_CPP = $(patsubst %.cpp, %.o, $(SOURCE_CPP))
EXE = main
$(EXE):$(OBJS_CC) $(OBJS_CPP)
g++ -o $@ $^
%.o:%.cc
g++ -o $@ -c $^ -I./include
%.o:%.cpp
g++ -o $@ -c $^ -I./include
.PHONY:clean
clean:
-rm $(EXE) *.o
执行make,编译结果如下: