|
|
# 指定CMake最低版本要求为3.5
|
|
|
cmake_minimum_required(VERSION 3.5)
|
|
|
# 定义项目名称和编程语言(C语言)
|
|
|
project(ziyan_sdk_demo_on_jetson C)
|
|
|
|
|
|
# 设置C编译器选项:启用POSIX线程,使用GNU99标准
|
|
|
set(CMAKE_C_FLAGS "-pthread -std=gnu99")
|
|
|
# 设置C++编译器选项:使用C++11标准,启用POSIX线程
|
|
|
set(CMAKE_CXX_FLAGS "-std=c++11 -pthread")
|
|
|
# 设置可执行文件链接选项:启用线程支持
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
|
|
|
# 指定C编译器为gcc
|
|
|
#set(CMAKE_C_COMPILER "gcc")
|
|
|
|
|
|
# 指定C++编译器为g++
|
|
|
#set(CMAKE_CXX_COMPILER "g++")
|
|
|
|
|
|
# 修改增添
|
|
|
set(TOOLCHAIN_NAME arm-linux-gnueabihf)
|
|
|
set(CMAKE_C_COMPILER "/usr/local/arm/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc")
|
|
|
set(CMAKE_CXX_COMPILER "/usr/local/arm/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
|
|
|
add_definitions(-DPLATFORM_ARCH_arm=1) # 定义ARM平台宏
|
|
|
|
|
|
# cmake 最低版本要求 第三行名字不能动
|
|
|
cmake_minimum_required(VERSION 2.8)
|
|
|
project(JZ_H200)
|
|
|
|
|
|
#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") # 设置可执行文件链接选项:启用线程支持
|
|
|
|
|
|
# 设置设备类型以加载主要功能模块
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
#预留行
|
|
|
set(ROOT_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../../../../../../")
|
|
|
message("ROOT_DIRS: ${ROOT_DIRS}")
|
|
|
|
|
|
# 定义GNU扩展源特性宏
|
|
|
add_definitions(-D_GNU_SOURCE)
|
|
|
# 包含模块配置
|
|
|
include(${ROOT_DIRS}CmakeConfig/Compiler.cmake)
|
|
|
include(${ROOT_DIRS}CmakeConfig/module_config.cmake)
|
|
|
include(${ROOT_DIRS}CmakeConfig/module_build.cmake)
|
|
|
#PSDK静态库
|
|
|
link_libraries(${CMAKE_CURRENT_LIST_DIR}/../../../../../psdk_lib/lib/${TOOLCHAIN_NAME}/libpayloadsdk.a)
|
|
|
|
|
|
# 如果未使用系统架构定义,则添加Linux系统架构宏
|
|
|
if (NOT USE_SYSTEM_ARCH)
|
|
|
add_definitions(-DSYSTEM_ARCH_LINUX)
|
|
|
endif ()
|
|
|
|
|
|
# 如果开启测试用例构建,添加代码覆盖率相关编译选项
|
|
|
# if (BUILD_TEST_CASES_ON MATCHES TRUE)
|
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
|
|
|
# endif ()
|
|
|
|
|
|
set(COMMON_CXX_FLAGS "-std=c++11 -pthread")
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++ -fprofile-arcs -ftest-coverage")
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
|
|
|
|
|
|
|
|
|
# 定义软件包名称为payloadsdk
|
|
|
set(PACKAGE_NAME payloadsdk)
|
|
|
|
|
|
## "uname -m" to auto distinguish Manifold2-G or Manifold2-C
|
|
|
## 通过执行uname -m命令自动区分硬件平台类型
|
|
|
# execute_process(COMMAND uname -m
|
|
|
# OUTPUT_VARIABLE DEVICE_SYSTEM_ID)
|
|
|
|
|
|
execute_process(COMMAND uname -m
|
|
|
OUTPUT_VARIABLE DEVICE_SYSTEM_ID)
|
|
|
|
|
|
# 定义GNU扩展源特性宏
|
|
|
add_definitions(-D_GNU_SOURCE)
|
|
|
add_definitions(-DPLATFORM_ARCH_arm=1) # 定义ARM平台宏
|
|
|
# 根据系统架构设置工具链和平台定义
|
|
|
# if (DEVICE_SYSTEM_ID MATCHES x86_64)
|
|
|
# set(TOOLCHAIN_NAME x86_64-linux-gnu) # x86_64架构工具链
|
...
|
...
|
@@ -69,40 +65,151 @@ set(PACKAGE_NAME payloadsdk) |
|
|
# message(FATAL_ERROR "FATAL: Please confirm your platform. SYSTEM_ID:${DEVICE_SYSTEM_ID}")
|
|
|
# endif ()
|
|
|
|
|
|
|
|
|
|
|
|
# 递归收集源代码文件
|
|
|
file(GLOB_RECURSE MODULE_COMMON_SRC ../common/*.c) # 公共模块C文件
|
|
|
file(GLOB_RECURSE MODULE_HAL_SRC hal/*.c) # HAL硬件抽象层C文件
|
|
|
file(GLOB_RECURSE MODULE_APP_SRC application/*.c) # 应用层C文件
|
|
|
file(GLOB_RECURSE MODULE_SAMPLE_SRC ../../../module_sample/*.c) # 示例模块C文件
|
|
|
file(GLOB_RECURSE MODULE_JZSDK_PSDK_EXPANSION_SRC JZsdk_PsdkExpansion/*.c) #接口文件
|
|
|
|
|
|
# 添加包含目录
|
|
|
include_directories(../../../module_sample) # 示例模块头文件目录
|
|
|
include_directories(../common) # 公共头文件目录
|
|
|
include_directories(./JZsdk_PsdkExpansion)
|
|
|
|
|
|
# 添加PSDK库的包含目录和链接设置
|
|
|
include_directories(../../../../../psdk_lib/include) # PSDK头文件目录
|
|
|
link_directories(../../../../../psdk_lib/lib/${TOOLCHAIN_NAME}) # PSDK库目录
|
|
|
# 链接静态库文件
|
|
|
link_libraries(${CMAKE_CURRENT_LIST_DIR}/../../../../../psdk_lib/lib/${TOOLCHAIN_NAME}/lib${PACKAGE_NAME}.a)
|
|
|
|
|
|
|
|
|
# 加载jzsdk的头文件 *****************************************************
|
|
|
include_directories(${ALL_INC_FILES})
|
|
|
|
|
|
|
|
|
|
|
|
# 设置可执行文件输出路径(默认到构建目录的bin子目录)
|
|
|
if (NOT EXECUTABLE_OUTPUT_PATH)
|
|
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
# 创建可执行目标,包含所有收集的源代码
|
|
|
add_executable(${PROJECT_NAME}
|
|
|
${MODULE_APP_SRC}
|
|
|
${MODULE_SAMPLE_SRC}
|
|
|
${MODULE_COMMON_SRC}
|
|
|
${MODULE_HAL_SRC})
|
|
|
${MODULE_HAL_SRC}
|
|
|
${MODULE_SAMPLE_SRC}
|
|
|
${MODULE_JZSDK_PSDK_EXPANSION_SRC}
|
|
|
|
|
|
${ALL_SRC_FILES} #加载jzsdk的源文件 *****************************************************
|
|
|
)
|
|
|
|
|
|
|
|
|
message("USB库已加载\n")
|
|
|
include_directories(${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/include)
|
|
|
target_link_libraries(
|
|
|
${PROJECT_NAME}
|
|
|
${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/lib/libusb-1.0.so.0
|
|
|
)
|
|
|
|
|
|
include(${ROOT_DIRS}CmakeConfig/module_lib_loading.cmake)
|
|
|
|
|
|
# 添加预链接自定义命令:在链接前执行cmake ..
|
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
|
PRE_LINK COMMAND cmake ..
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
|
|
|
|
|
|
|
message("USB库已加载\n")
|
|
|
include_directories(${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/include)
|
|
|
target_link_libraries(
|
|
|
${PROJECT_NAME}
|
|
|
${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/lib/libusb-1.0.so.0
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 如果开启测试用例构建,添加代码覆盖率相关编译选项
|
|
|
# if (BUILD_TEST_CASES_ON MATCHES TRUE)
|
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
|
|
|
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
|
|
|
# endif ()
|
|
|
|
|
|
|
|
|
# 定义软件包名称为payloadsdk
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 链接静态库文件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 设置第三方库查找路径
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../common/3rdparty)
|
|
|
# set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../common/3rdparty)
|
|
|
|
|
|
|
|
|
# message("USB库已加载\n")
|
|
|
# include_directories(${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/include)
|
|
|
# target_link_libraries(
|
|
|
# ${PROJECT_NAME}
|
|
|
# ${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/lib/libusb-1.0.so.0
|
|
|
# )
|
|
|
|
|
|
|
|
|
|
|
|
# # 链接数学库
|
|
|
# target_link_libraries(${PROJECT_NAME} m)
|
|
|
# # 链接C++标准库
|
|
|
# target_link_libraries(${PROJECT_NAME} stdc++)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# # 使用pkg-config查找FFmpeg相关库
|
|
|
# find_package(PkgConfig REQUIRED)
|
|
|
# pkg_check_modules(AVFORMAT REQUIRED libavformat) # 查找avformat模块
|
|
|
# pkg_check_modules(AVCODEC REQUIRED libavcodec) # 查找avcodec模块
|
|
|
# pkg_check_modules(AVUTIL REQUIRED libavutil) # 查找avutil模块
|
|
|
|
|
|
# # 添加FFmpeg头文件目录
|
|
|
# include_directories(${AVFORMAT_INCLUDE_DIRS})
|
|
|
# include_directories(${AVCODEC_INCLUDE_DIRS})
|
|
|
# include_directories(${AVUTIL_INCLUDE_DIRS})
|
|
|
|
|
|
# # 链接FFmpeg相关库
|
|
|
# target_link_libraries(${PROJECT_NAME} ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES})
|
|
|
# message("\nffmpeg模块加载\n")
|
|
|
# set(FFMPEG_6_0_DIRS "${ROOT_DIRS}ThirdParty/ffmpeg_6_0/lib/arm-cortexa9-linux-gnueabihf")
|
|
|
# include_directories(${ROOT_DIRS}ThirdParty/ffmpeg_6_0/include)
|
|
|
# target_link_libraries(
|
|
|
# ${PROJECT_NAME}
|
|
|
# ${FFMPEG_6_0_DIRS}/libavcodec.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavdevice.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavfilter.so.9
|
|
|
# ${FFMPEG_6_0_DIRS}/libavformat.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavutil.so.58
|
|
|
# ${FFMPEG_6_0_DIRS}/libpostproc.so.57
|
|
|
# ${FFMPEG_6_0_DIRS}/libswresample.so.4
|
|
|
# ${FFMPEG_6_0_DIRS}/libswscale.so.7
|
|
|
# )
|
|
|
|
|
|
# # 查找OPUS音频编解码库
|
|
|
# #find_package(OPUS REQUIRED)
|
...
|
...
|
@@ -163,49 +270,3 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../common/3rdparty) |
|
|
# message(STATUS "Cannot Find LIBUSB")
|
|
|
# endif (LIBUSB_FOUND)
|
|
|
# 读取本地的libusb |
|
|
message("USB库已加载\n")
|
|
|
include_directories(${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/include)
|
|
|
target_link_libraries(
|
|
|
${PROJECT_NAME}
|
|
|
${ROOT_DIRS}/ThirdParty/libusb/arm-cortexa9-linux-gnueabihf/lib/libusb-1.0.so.0
|
|
|
)
|
|
|
|
|
|
|
|
|
# # 使用pkg-config查找FFmpeg相关库
|
|
|
# find_package(PkgConfig REQUIRED)
|
|
|
# pkg_check_modules(AVFORMAT REQUIRED libavformat) # 查找avformat模块
|
|
|
# pkg_check_modules(AVCODEC REQUIRED libavcodec) # 查找avcodec模块
|
|
|
# pkg_check_modules(AVUTIL REQUIRED libavutil) # 查找avutil模块
|
|
|
|
|
|
# # 添加FFmpeg头文件目录
|
|
|
# include_directories(${AVFORMAT_INCLUDE_DIRS})
|
|
|
# include_directories(${AVCODEC_INCLUDE_DIRS})
|
|
|
# include_directories(${AVUTIL_INCLUDE_DIRS})
|
|
|
|
|
|
# # 链接FFmpeg相关库
|
|
|
# target_link_libraries(${PROJECT_NAME} ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES})
|
|
|
# message("\nffmpeg模块加载\n")
|
|
|
# set(FFMPEG_6_0_DIRS "${ROOT_DIRS}ThirdParty/ffmpeg_6_0/lib/arm-cortexa9-linux-gnueabihf")
|
|
|
# include_directories(${ROOT_DIRS}ThirdParty/ffmpeg_6_0/include)
|
|
|
# target_link_libraries(
|
|
|
# ${PROJECT_NAME}
|
|
|
# ${FFMPEG_6_0_DIRS}/libavcodec.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavdevice.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavfilter.so.9
|
|
|
# ${FFMPEG_6_0_DIRS}/libavformat.so.60
|
|
|
# ${FFMPEG_6_0_DIRS}/libavutil.so.58
|
|
|
# ${FFMPEG_6_0_DIRS}/libpostproc.so.57
|
|
|
# ${FFMPEG_6_0_DIRS}/libswresample.so.4
|
|
|
# ${FFMPEG_6_0_DIRS}/libswscale.so.7
|
|
|
# )
|
|
|
|
|
|
|
|
|
# 链接数学库
|
|
|
target_link_libraries(${PROJECT_NAME} m)
|
|
|
# 链接C++标准库
|
|
|
target_link_libraries(${PROJECT_NAME} stdc++)
|
|
|
|
|
|
# 添加预链接自定义命令:在链接前执行cmake ..
|
|
|
add_custom_command(TARGET ${PROJECT_NAME}
|
|
|
PRE_LINK COMMAND cmake ..
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) |
|
|
\ No newline at end of file |
...
|
...
|
|