.cc與.cpp源文件混合編譯

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章