1#CC = gcc 2CROSS = /home/yyz/audio/rk3308/buildroot/output/rockchip_rk3308_pcba_32bit/host/bin/arm-rockchip-linux-gnueabihf- 3CC = $(CROSS)gcc 4CXX = $(CROSS)g++ 5 6#MW_DIR=$(PWD) 7LIBS += -lpthread 8MW_DIR=./ 9TARGET = libmictest.so 10INCLUDE = -I./ 11# 12CFLAGS += -fPIC -DTINA_LINUX -DWITHOUT_ALOG=1 -lpthread -O3 -fno-strict-aliasing -fprefetch-loop-arrays -mfloat-abi=hard -mfpu=neon -marm -march=armv7-a 13#-mfpu=neon -marm -march=armv7-a 14CXXFLAGS += -fPIC -DTINA_LINUX -DWITHOUT_ALOG=1 -lpthread -O3 -fno-strict-aliasing -fprefetch-loop-arrays -mfloat-abi=hard -mfpu=neon -marm -march=armv7-a 15#-mfpu=neon -marm -march=armv7-a 16LDFLAGS = -fPIC -shared 17#找到所有编译目录下的头文件-- 18SAMDIR=$(MW_DIR) 19 20SAMINCH=$(shell find $(SAMDIR) -name "*.h*") 21 22#找到了,大家可以看到Makefile是可以使用shell命令的,现在结果存储在SAMINCH。 23 24TMP_DIR=$(dir $(SAMINCH)) 25 26#dir是个函数,就是列出SAMINCH目录前缀(/*.h之前的字串)的结果。 27 28SAMINCDIR=$(sort $(TMP_DIR)) 29 30#sort也是个函数,这是为了去除重复的目录名。 31 32INCLUDE += $(foreach temp, $(SAMINCDIR), -I$(temp)) 33 34#只是列出所有匹配的目录结果, 加到-I选项之后,用空格隔开。 35 36 37#好了,轮到源程序了。 38 39CPP_FILES=$(shell find $(SAMDIR) -name '*.cpp') 40C_FILES =$(shell find $(SAMDIR) -name '*.c') 41 42OBJCPP=$(CPP_FILES:%.cpp=%.o) 43OBJC =$(C_FILES:%.c=%.o) 44 45#建立规则 46#$(warning objcpp is $(OBJCPP) objc is $(OBJC) ) 47#$(warning cflags is $(CFLAGS)) 48#下面实际的编译过程加上: 49$(TARGET): $(OBJCPP) $(OBJC) 50# $(CXX) $(LDFLAGS) -o $(TARGET) 51 $(CXX) $(LDFLAGS) $(OBJCPP) $(OBJC) -o $@ $(LIBS) 52 53$(OBJCPP): %.o: %.cpp 54 $(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o $@ 55 56$(OBJC): %.o: %.c 57 $(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@ 58 59#control: clean $(APP) 60# $(CPP) -m32 -o $@ $(INCLUDE) $(APP) 61 62clean: 63 rm -fr $(OBJCPP) $(OBJC) 64# rm -f control 65 66