CMakeLists.txt
7.0 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# cmake 最低版本要求 第三行名字不能动
cmake_minimum_required(VERSION 2.8)
project(JZ_UART_APP)
set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++")
#"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。
#"-std=gnu99":指定C语言标准为GNU C99(也就是C99加上GNU的扩展特性),该标准对于一些特性和库的使用是必须的。
#"-lm":指定在编译时链接数学库,以使用一些数学函数。
#"-ldl":指定在编译时链接动态库加载库,以使用动态加载。
#"-lstdc++":指定在编译时链接C++标准库,以使用C++的一些特性和函数。
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
#预留行
#预留行
#预留行
#预留行
#预留行
#预留行
#预留行
#预留行
# 设置滤波方式 24行不能被改动,因为会被sh修改滤波方式
set(filtering_type high_pass_filtering)
# 海外版本 27行不能改动
set(firewarm_origin DOMESTIC_VERSION)
# 添加Cedar库 30行不能改动
set(CedarxLib VERSION_SWITCH_OFF)
if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
set(CMAKE_C_COMPILER "/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
else()
# 交叉编译链①
set(CMAKE_C_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/usr/local/arm/4.9.3/bin/arm-cortexa9-linux-gnueabihf-g++")
endif()
# 指定源文件
file(GLOB_RECURSE APPLICATION_SRC application/*.c) #main MODULE_APP_SRC
file(GLOB_RECURSE JZSDK_SRC JZsdk/*.c)
file(GLOB_RECURSE JZSDK_UART_DEAL_SRC JZsdk_Uart/*.c)
file(GLOB_RECURSE GIMBAL_SRC Module/Gimbal/*.c)
file(GLOB_RECURSE MEGAPHONE_SRC Module/Megaphone/*.c)
file(GLOB_RECURSE LIGHTING_SRC Module/Lighting/*.c)
file(GLOB_RECURSE CAMERA_SRC Module/Camera/*.c)
file(GLOB_RECURSE POWERMANAGER_SRC Module/PowerManager/*.c)
file(GLOB_RECURSE TESTAPP_SRC Module/TestAPP/*.c)
file(GLOB_RECURSE SERIALMAT_SRC Module/SerialManagement/*.c)
file(GLOB_RECURSE MODULE_IRCUT_SRC Module/Ircut/*.c)
file(GLOB_RECURSE MODULE_UICONTROL_SRC Module/UI_control/*.c)
file(GLOB_RECURSE MODULE_IMAGEPROCESSING_SRC Module/ImageProcessing/*.c)
file(GLOB_RECURSE MODULE_IMAGEPROCESSING_cpp_SRC Module/ImageProcessing/*.cpp)
# 生成可执行文件
add_executable(
JZ_UART_APP
${APPLICATION_SRC}
${JZSDK_SRC}
${JZSDK_UART_DEAL_SRC}
${MEGAPHONE_SRC}
${MODULE_IRCUT_SRC}
${GIMBAL_SRC}
${MODULE_UICONTROL_SRC}
${LIGHTING_SRC}
${POWERMANAGER_SRC}
${CAMERA_SRC}
${TESTAPP_SRC}
${SERIALMAT_SRC}
${MODULE_IMAGEPROCESSING_SRC}
${MODULE_IMAGEPROCESSING_cpp_SRC}
)
# 头文件路径
include_directories(./application)
include_directories(./JZsdk)
include_directories(./JZsdk_Uart)
include_directories(./Module/Megaphone)
include_directories(./Module/Ircut)
include_directories(./Module/Ircut/H3_ircut/wiringPi)
include_directories(./Module/Gimbal)
include_directories(./Module/Lighting)
include_directories(./Module/UI_control)
include_directories(./Module/PowerManager)
include_directories(./Module/Camera)
include_directories(./Module/TestAPP)
include_directories(./Module/ImageProcessing)
include_directories(./Module/SerialManagement)
# 库文件路径
if(${filtering_type} STREQUAL "directed_stopband_filtering")
message("\n滤波库:带阻滤波\n")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/directed_stopband_filtering/libAudioPlayer.so)
elseif(${filtering_type} STREQUAL "high_pass_filtering")
message("\n滤波库:高通滤波\n")
if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/high_pass_filtering_gcclinaro/libAudioPlayer.so)
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/high_pass_filtering_gcclinaro/libasound.so.2)
else()
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/high_pass_filtering/libAudioPlayer.so)
endif()
else()
message(FATAL_ERROR "Invalid filtering type")
endif()
if(${firewarm_origin} STREQUAL "OVERSEAS_VERSION")
message("\n固件版本为海外版\n")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/intl_tts/libportaudio.so.2)
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/intl_tts/libTTS_Player.so)
else()
message("\n固件版本为国内版\n")
endif()
if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
message("\nCedarX已加载\n")
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libawh264.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libMemAdapter.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libVE.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libvencoder.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libvideoengine.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/Camera/CedarX/libvdecoder.so
)
message("\n OpenCV已加载\n")
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_calib3d.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_core.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_dnn.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_features2d.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_flann.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_highgui.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_imgcodecs.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_imgproc.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_ml.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_objdetect.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_photo.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_shape.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_stitching.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_superres.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_videoio.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_video.so #动态库
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/OpenCV/libopencv_videostab.so #动态库
)
message("\n ffmpeg已加载\n")
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libavcodec.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libavdevice.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libavfilter.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libavformat.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libavutil.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libswresample.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/ffmpeg/libswscale.so
)
message("\n SearchLightCenter已加载\n")
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/SearchLightCenter/libcenter.so
)
endif()
target_link_libraries(${PROJECT_NAME}
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/libmsc.so
${CMAKE_CURRENT_LIST_DIR}/ModuleLib/opus/libopus.so
)