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( "$<$:/source-charset:utf-8>" "$<$:/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)