工程中包含了兩個子目錄,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,編譯結果如下: