123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- cmake_minimum_required(VERSION 3.5)
- project(HK_Camera VERSION 0.1 LANGUAGES CXX)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- #=========================================================
- #****************** 设置编译器和Qt版本 ******************
- #=========================================================
- #Linux中需要指定QT的路径,没法用官方插件,官方插件指定的路径搜索不到编译器
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- # set(CMAKE_C_COMPILER gcc)
- # set(CMAKE_CXX_COMPILE g++)
- # set(CMAKE_PREFIX_PATH "/home/Apple/Programes/Qt/Qt5.12.12/5.12.12/gcc_64")
- #设置使用make生成器,不适用ninja
- set(CMAKE_MAKE_PROGRAM make)
- message(STATUS "***** 当前系统:${CMAKE_SYSTEM_NAME}")
- message(STATUS "***** 当前C++编译器:${CMAKE_CXX_COMPILER_VERSION}")
- endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
- #=========================================================
- #************* 设置可执行文件的名称和输出位置 *************
- #=========================================================
- #设置可执行文件名称
- set(lib_name LHEQM_Video)
- #设置可执行文件和库位置
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- message(STATUS "Using Linux System")
- set(LIB_FFMPEG ${CMAKE_SOURCE_DIR}/External_Linux/ffmpeg4.4.5/lib)
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
- set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
-
- elseif(CMAKE_BUILD_TYPE MATCHES Release)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
- set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
- endif()
- #Windows下的设置
- elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
- message(STATUS "Using WIN32 System")
- if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
- message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
- #设置可执行文件输出位置
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU)
- #设置库生成位置
- set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU)
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
- #指定SPDLOG链接库的位置
- set(LIB_SPDLOG ${CMAKE_SOURCE_DIR}/libs/spdlog/mingw73/debug)
- else()
- message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
- #指定SPDLOG链接库的位置
- set(LIB_SPDLOG ${CMAKE_SOURCE_DIR}/libs/spdlog/mingw73/release)
- endif()
- elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_MSVC)
- set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
- # string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus /MP")
- #设置可执行文件输出位置
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
- #指定SPDLOG链接库的位置
- set(LIB_SPDLOG ${CMAKE_SOURCE_DIR}/libs/spdlog/msvc2022/debug)
- else()
- message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
- #指定SPDLOG链接库的位置
- set(LIB_SPDLOG ${CMAKE_SOURCE_DIR}/libs/spdlog/msvc2022/release)
- endif()
- endif()
- endif()
- #设置库和可执行文件的输出位置
- set(EXECUTABLE_OUTPUT_PATH ${exec_out_path})
- set(LIBRARY_OUTPUT_PATH ${exec_out_path})
- #指定库的位置,方便寻找
- link_directories(${LIB_PATH})
- link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_linux)
- link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_linux/HCNetSDKCom)
- link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_win64)
- link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_win64/HCNetSDKCom)
- link_directories(${LIB_FFMPEG})
- #=======================================================
- #*************** 启用一些模块和选项 ***************
- #=======================================================
- #设置MSVC的一些编译属性
- if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- #设置MSVC使用UTF-8
- add_compile_options(
- "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
- "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
- )
- #消除MSVC对SPDLOG的兼容性警告
- add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
- endif()
- #添加一些gcc的编译属性
- if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
- # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
- # #添加编译参数,这个参数会应用到全局,C和C++都会生效
- # add_compile_options(-Wall -O2)
- endif()
- #定义这个宏,海康SDK中使用了__linux__和__LINUX__两种,但是本机gcc只定义了__linux__
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- add_compile_definitions(__LINUX__)
- endif()
- #给spdlog添加宏定义,使其支持%#等源文件相关的标志
- add_compile_definitions(SPDLOG_COMPILED_LIB)
- add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
- option(ENABLE_SPDLOG_STATIC_LIB "启用SPDLOG静态库" ON)
- #添加宏
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- add_compile_definitions(C_DEBUG)
- elseif(CMAKE_BUILD_TYPE MATCHES Release)
- add_compile_definitions(C_RELEASE)
- endif()
- #=========================================================
- #******************* 添加库和文件 ***********************
- #=========================================================
- #设置启用某些库的选项
- find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
- find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
- find_package(Qt5 COMPONENTS
- Widgets
- Core
- Network
- OpenGL
- REQUIRED
- )
- include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
- # include(${CMAKE_SOURCE_DIR}/External_Ex/Library_EX.cmake)
- # file(GLOB GLOBAL_SPDLOG_INC
- # )
- # file(GLOB GLOBAL_INC
- # ${CMAKE_SOURCE_DIR}/*.h
- # # ${CMAKE_SOURCE_DIR}/camera_so/*.h
- # )
- #包含头文件
- # include_directories(
- # )
- #set(QRC ${CMAKE_SOURCE_DIR}/*.qrc)
- #包含源文件
- file(GLOB GLOBAL_SRC
- # ${GLOBAL_INC}
- )
- #添加子文件夹,放在库的后面执行,先生成动态库
- add_subdirectory(show1)
|