# 指定CMake版本 cmake_minimum_required(VERSION 3.5) #使能c++11 set(CMAKE_CXX_STANDARD 11) # 项目信息 project(Demo C CXX) # 设置为调试版本 set(CMAKE_BUILD_TYPE Debug) # 设置可执行文件路径 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/source/bin/) # ---[ Options option(build_inference "build module inference" ON) option(build_decoder "build module decoder" ON) option(build_inifile "build module inifile" ON) option(build_dataType "build module dataType" ON) option(build_md5 "build module md5" ON) option(build_sqlHelper "build module sqlHelper" ON) option(build_userApp "build module userApp" ON) option(build_TCPClient "build module TCPClient" ON) option(WITH_FFMPEG "with ffmpeg" ON) option(WITH_OPENCV "with opencv" ON) option(WITH_ZLMediaKit "with ZLMediaKit" OFF) set(ENABLE_MYSQL ON CACHE BOOL "enable mysql") # ---[ Google-gflags if(CMAKE_TOOLCHAIN_FILE) set(GFLAGS_LIBRARIES gflags) else() include("${PROJECT_SOURCE_DIR}/cmake/FindGFlags.cmake") endif() list(APPEND 3RDPARTY_INCLUDE_DIRS ${GFLAGS_INCLUDE_DIRS}) list(APPEND 3RDPARTY_LIBS ${GFLAGS_LIBRARIES}) # ---[ Google-glog if(CMAKE_TOOLCHAIN_FILE) set(GLOG_LIBRARIES glog) else() include("${PROJECT_SOURCE_DIR}/cmake/FindGlog.cmake") endif() list(APPEND 3RDPARTY_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS}) list(APPEND 3RDPARTY_LIBS ${GLOG_LIBRARIES}) list(APPEND 3RDPARTY_LIBS mpeg mov flv mk_api zltoolkit zlmediakit) ##OpenCV if(WITH_OPENCV) if(CMAKE_TOOLCHAIN_FILE) if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv) set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_features2d opencv_flann) if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv2/imgcodecs) list(APPEND OpenCV_LIBS opencv_imgcodecs) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv2/videoio) list(APPEND OpenCV_LIBS opencv_videoio) endif() message(STATUS "HAVE_OPENCV enabled") message(STATUS "opencv libraries: ${OpenCV_LIBS}") set(HAVE_OPENCV true) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV") else() set (HAVE_OPENCV false) endif() else() set(OpenCV_FIND_QUIETLY true) #find_package(OpenCV REQUIRED) //this will include opencv_ts which result in crash on centos find_package(OpenCV OPTIONAL_COMPONENTS imgcodecs) find_package(OpenCV OPTIONAL_COMPONENTS videoio) set(optional_opencv_libs ${OpenCV_LIBS}) find_package(OpenCV REQUIRED core imgproc highgui features2d) if(OpenCV_FOUND) if(imgcodecs_FOUND) list(APPEND OpenCV_LIBS optional_opencv_libs) endif() message(STATUS "HAVE_OPENCV enabled") message(STATUS "opencv libraries: ${OpenCV_LIBS}") set(HAVE_OPENCV true) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV") else() set (HAVE_OPENCV false) endif() endif() else() set (HAVE_OPENCV false) endif() ##FFmpeg if(WITH_FFMPEG) if(CMAKE_TOOLCHAIN_FILE) if(EXISTS ${PROJECT_SOURCE_DIR}/include/libavcodec) set(FFMPEG_LIBRARIES avformat avcodec avutil swscale swresample) if (WITH_FFMPEG_AVDEVICE) list(APPEND FFMPEG_LIBRARIES avdevice) endif () set(HAVE_FFMPEG true) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_FFMPEG") message(STATUS "HAVE_FFMPEG enabled") message(STATUS "ffmpeg libraries: ${FFMPEG_LIBRARIES}") else() set (HAVE_FFMPEG false) endif() else() set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) find_package(FFmpeg REQUIRED) if (FFMPEG_FOUND) include_directories(${FFMPEG_INCLUDE_DIR}) set(HAVE_FFMPEG true) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_FFMPEG") message(STATUS "HAVE_FFMPEG enabled") message(STATUS "ffmpeg include: ${FFMPEG_INCLUDE_DIR}") message(STATUS "ffmpeg libraries: ${FFMPEG_LIBRARIES}") else () message(FATAL_ERROR "Can't find FFmpeg libs!") set (HAVE_FFMPEG false) endif () endif() else() set (HAVE_FFMPEG false) endif() # -- ZLMediaKit if(WITH_ZLMediaKit) add_subdirectory(${PROJECT_SOURCE_DIR}/3rdparty) endif() #查找mysql是否安装 find_package(MYSQL QUIET) if(MYSQL_FOUND AND ENABLE_MYSQL) message(STATUS "找到mysqlclient库:\"${MYSQL_INCLUDE_DIR}\",ENABLE_MYSQL宏已打开") include_directories(${MYSQL_INCLUDE_DIR}) include_directories(${MYSQL_INCLUDE_DIR}/mysql) add_definitions(-DENABLE_MYSQL) list(APPEND 3RDPARTY_LIBS ${MYSQL_LIBRARIES}) endif() #设置工程源码根目录 set(ToolKit_Root ${PROJECT_SOURCE_DIR}/3rdparty/ZLMediaKit/3rdpart/ZLToolKit/src) set(MediaKit_Root ${PROJECT_SOURCE_DIR}/3rdparty/ZLMediaKit/src) set(MediaServer_Root ${PROJECT_SOURCE_DIR}/3rdparty/ZLMediaKit/3rdpart/media-server) # -- include include_directories(${PROJECT_SOURCE_DIR}/3rdparty/rapidjson/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/inference/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/decoder/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/userApp/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/md5/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/inifile/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/TCPClient/include/) include_directories(${PROJECT_SOURCE_DIR}/modules/dataType/include/) include_directories(${ToolKit_Root}) include_directories(${MediaKit_Root}) include_directories(${PROJECT_SOURCE_DIR}/3rdparty/ZLMediaKit) # -- include gstreamer include_directories(/usr/include/gstreamer-1.0) include_directories(/usr/include/glib-2.0/) include_directories(/usr/lib/aarch64-linux-gnu/glib-2.0/include) include_directories(/opt/nvidia/deepstream/deepstream-5.0/sources/includes/) # 寻找当前目录下所有源文件 aux_source_directory(./source/src DIR_SRCS) # 添加编译参数 add_compile_options(-Wall -std=c++11 -O2 -g -DPLATFORM_TEGRA -DPLATFORM_TEGRA) link_directories(${PROJECT_SOURCE_DIR}/lib) link_directories(/opt/nvidia/deepstream/deepstream-5.0/lib/) list(APPEND Source_LINKER_LIBS mov flv mk_api mpeg zlmediakit ZLToolKit dl ${3RDPARTY_LIBS} ${OpenCV_LIBS} ${FFMPEG_LIBRARIES} pthread) list(APPEND ALL_LINKER_LIBS gstreamer-1.0 gobject-2.0 glib-2.0 nvdsgst_meta nvds_meta nvdsgst_helper m ${Source_LINKER_LIBS}) add_subdirectory(${PROJECT_SOURCE_DIR}/modules) # 指定生成的目标 add_executable(main ${DIR_SRCS}) # 链接 target_link_libraries(main ${ALL_LINKER_LIBS} modules)