CMakeLists.txt.bak 8.7 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) 

# 添加编译链选择 33行禁止改动
set(MAKE_COMPILER ARM_X86_64_ARRCH64) 

if(${MAKE_COMPILER} STREQUAL "ARM_CORTEXA9_LINUX")
    if(${CedarxLib} STREQUAL "VERSION_SWITCH_ON")
        # 交叉编译链1
		set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc)
        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()
        # 交叉编译链2
		set(TOOLCHAIN_NAME arm-linux-gnueabihf-gcc)
        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()
elseif(${MAKE_COMPILER} STREQUAL "ARM_X86_64_ARRCH64")
    # 交叉编译链3 
	set(TOOLCHAIN_NAME aarch64-linux-gnu-gcc)
    set(CMAKE_C_COMPILER "/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc")
    set(CMAKE_CXX_COMPILER "/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++")
elseif(${MAKE_COMPILER} STREQUAL "LOCAL")
    # 本地测试编译链
    set(CMAKE_C_COMPILER "/usr/bin/gcc")
    set(CMAKE_CXX_COMPILER "/usr/bin/g++")
else()
    message(FATAL_ERROR "不支持的编译链")
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/Camera)
include_directories(./Module/PowerManager)
include_directories(./Module/TestAPP)
include_directories(./Module/ImageProcessing)
include_directories(./Module/SerialManagement)

# 库文件路径 


if(${filtering_type} STREQUAL "directed_stopband_filtering")

    message("\n滤波库:带阻滤波\n")
	add_definitions(-DFUNTION_MEGAPHONE) #加载喊话器模块

    target_link_libraries(
		${PROJECT_NAME} 
		${CMAKE_CURRENT_LIST_DIR}/ModuleLib/music/directed_stopband_filtering/libAudioPlayer.so
		${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/libmsc.so
		${CMAKE_CURRENT_LIST_DIR}/ModuleLib/opus/libopus.so
		)
	
		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()

elseif(${filtering_type} STREQUAL "high_pass_filtering")
    message("\n滤波库:高通滤波\n")
	add_definitions(-DFUNTION_MEGAPHONE) #加载喊话器模块

	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()

	target_link_libraries(
		${PROJECT_NAME}
		${CMAKE_CURRENT_LIST_DIR}/ModuleLib/TTS/libmsc.so
		${CMAKE_CURRENT_LIST_DIR}/ModuleLib/opus/libopus.so)

		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()

elseif(${filtering_type} STREQUAL "OFF")
	message("\n无音频库加载\n")
else()
    message(FATAL_ERROR "Invalid filtering type")
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
)