hc
2024-08-16 62c46c9150c4afde7e5b25436263fddf79d66f0b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#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