AllDirs := $(shell ls -R | grep '^\./.*:$$' | awk '{gsub(":","");print}') .
Sources := $(foreach n,$(AllDirs) , $(wildcard $(n)/*.cpp))
Objs := $(patsubst %.cpp,%.o, $(Sources))
Deps := $(patsubst %.cpp,%.d, $(Sources))
CC = gcc
CXX = g++
RM = rm -f
CXXFLAGS = -g -O2 -Wall
#CPPFLAGS = $(foreach n,$(AllDirs), -I$(n))
CPPFLAGS = -Iinclude
LDFLAGS =
TARGET = test
all: $(TARGET)
$(TARGET): $(Objs)
$(CXX) -g -o $@ $^ $(LDFLAGS)
%.d : %.c
$(CC) -MT"$(<:.cpp=.o) $@" -MM $(CXXFLAGS) $(CPPFLAGS) $< > $@
%.d : %.cpp
$(CXX) -MT"$(<:.cpp=.o) $@" -MM $(CXXFLAGS) $(CPPFLAGS) $< > $@
sinclude $(Deps)
.PHONY : clean
clean:
$(RM) $(Objs) $(Deps) $(TARGET)
一个能够自动匹配文件并编译的makefile
猜你喜欢
转载自blog.csdn.net/Leo_csdn_/article/details/83624527
今日推荐
周排行