CMakeLists.txt 7.0 KB
# 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
)