#CC = gcc CROSS = /home/yyz/audio/rk3308/buildroot/output/rockchip_rk3308_pcba_32bit/host/bin/arm-rockchip-linux-gnueabihf- CC = $(CROSS)gcc CXX = $(CROSS)g++ #MW_DIR=$(PWD) LIBS += -lpthread MW_DIR=./ TARGET = libmictest.so INCLUDE = -I./ # CFLAGS += -fPIC -DTINA_LINUX -DWITHOUT_ALOG=1 -lpthread -O3 -fno-strict-aliasing -fprefetch-loop-arrays -mfloat-abi=hard -mfpu=neon -marm -march=armv7-a #-mfpu=neon -marm -march=armv7-a CXXFLAGS += -fPIC -DTINA_LINUX -DWITHOUT_ALOG=1 -lpthread -O3 -fno-strict-aliasing -fprefetch-loop-arrays -mfloat-abi=hard -mfpu=neon -marm -march=armv7-a #-mfpu=neon -marm -march=armv7-a LDFLAGS = -fPIC -shared #找到所有编译目录下的头文件-- SAMDIR=$(MW_DIR) SAMINCH=$(shell find $(SAMDIR) -name "*.h*") #找到了,大家可以看到Makefile是可以使用shell命令的,现在结果存储在SAMINCH。 TMP_DIR=$(dir $(SAMINCH)) #dir是个函数,就是列出SAMINCH目录前缀(/*.h之前的字串)的结果。 SAMINCDIR=$(sort $(TMP_DIR)) #sort也是个函数,这是为了去除重复的目录名。 INCLUDE += $(foreach temp, $(SAMINCDIR), -I$(temp)) #只是列出所有匹配的目录结果, 加到-I选项之后,用空格隔开。 #好了,轮到源程序了。 CPP_FILES=$(shell find $(SAMDIR) -name '*.cpp') C_FILES =$(shell find $(SAMDIR) -name '*.c') OBJCPP=$(CPP_FILES:%.cpp=%.o) OBJC =$(C_FILES:%.c=%.o) #建立规则 #$(warning objcpp is $(OBJCPP) objc is $(OBJC) ) #$(warning cflags is $(CFLAGS)) #下面实际的编译过程加上: $(TARGET): $(OBJCPP) $(OBJC) # $(CXX) $(LDFLAGS) -o $(TARGET) $(CXX) $(LDFLAGS) $(OBJCPP) $(OBJC) -o $@ $(LIBS) $(OBJCPP): %.o: %.cpp $(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o $@ $(OBJC): %.o: %.c $(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@ #control: clean $(APP) # $(CPP) -m32 -o $@ $(INCLUDE) $(APP) clean: rm -fr $(OBJCPP) $(OBJC) # rm -f control