一个编译C++ 文件常用得 makefile ,直接拷贝就可以用哦。

时间:2022-02-17 19:52:40

SRCROOT当前源代码目录

SRCROOT=../src/


CC = g++


INCLUDE_PATH=$(shell find $(SRCROOT) -type d) ../src

INCLUDE=$(addprefix -I ,$(INCLUDE_PATH))


#设置编译得参数 -g 表示可以产生debug符号

FLAGS = -g -fPIC


#SRC_FILE 也可以这样来做:

#SRC_FILES=$(wildcard *.cpp)
#DIR=$(notdir $(src))
#OBJS=$(patsubst %.c%.o$(dir) )


SRC_FILES=$(shell find $(SRCROOT) -name '*.cpp') 

OBJS=$(patsubst %.mm,%.o,$(patsubst %.cpp,%.oo,$(SRC_FILES)))


all:    ALLEXE


ALLEXE:  $(OBJS)

$(CC) $(FLAGS) -o $@ $^

find $(SRCROOT) -name '*.o' | xargs rm -fr

find $(SRCROOT) -name '*.oo' | xargs rm -fr

find $(SRCROOT) -name '*.s' | xargs rm -fr

find $(SRCROOT) -name '*.ss' | xargs rm -fr


%.o:%.cpp

$(CC) $(FLAGS) -o $@$<

#也可以这样写:

# $(OBJS): %.o: %.c
# $(CC) -c $(CFLAGS) $< -o $@ 

#    记得命令用tab开头哦。。。


clean:

find $(SRCROOT) -name '*.o' | xargs rm -fr

find $(SRCROOT) -name '*.oo' | xargs rm -fr

find $(SRCROOT) -name '*.s' | xargs rm -fr

find $(SRCROOT) -name '*.ss' | xargs rm -fr

rm -fr ALLEXE