CMakeLists.txt 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. cmake_minimum_required(VERSION 3.5)
  2. project(HK_Camera VERSION 0.1 LANGUAGES CXX)
  3. set(CMAKE_AUTOUIC ON)
  4. set(CMAKE_AUTOMOC ON)
  5. set(CMAKE_AUTORCC ON)
  6. set(CMAKE_CXX_STANDARD 17)
  7. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  8. #=========================================================
  9. #****************** 设置编译器和Qt版本 ******************
  10. #=========================================================
  11. #Linux中需要指定QT的路径,没法用官方插件,官方插件指定的路径搜索不到编译器
  12. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  13. # set(CMAKE_C_COMPILER gcc)
  14. # set(CMAKE_CXX_COMPILE g++)
  15. # set(CMAKE_PREFIX_PATH "/home/Apple/Programes/Qt/Qt5.12.12/5.12.12/gcc_64")
  16. #设置使用make生成器,不适用ninja
  17. set(CMAKE_MAKE_PROGRAM make)
  18. message(STATUS "***** 当前系统:${CMAKE_SYSTEM_NAME}")
  19. message(STATUS "***** 当前C++编译器:${CMAKE_CXX_COMPILER_VERSION}")
  20. endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  21. #=========================================================
  22. #************* 设置可执行文件的名称和输出位置 *************
  23. #=========================================================
  24. #设置可执行文件名称
  25. set(lib_name LHEQM_Video)
  26. #设置可执行文件和库位置
  27. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  28. message(STATUS "Using Linux System")
  29. set(LIB_FFMPEG ${CMAKE_SOURCE_DIR}/External_Linux/ffmpeg4.4.5/lib)
  30. if(CMAKE_BUILD_TYPE MATCHES Debug)
  31. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
  32. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
  33. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  34. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
  35. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
  36. endif()
  37. #Windows下的设置
  38. elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
  39. message(STATUS "Using WIN32 System")
  40. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  41. message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
  42. #判断32位还是64位
  43. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  44. #设置可执行文件输出位置
  45. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
  46. #设置库生成位置
  47. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
  48. else()
  49. #设置可执行文件输出位置
  50. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
  51. #设置库生成位置
  52. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
  53. endif()
  54. elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  55. message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
  56. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  57. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  58. # string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus /MP")
  59. endif()
  60. endif()
  61. #设置库和可执行文件的输出位置
  62. set(EXECUTABLE_OUTPUT_PATH ${exec_out_path})
  63. set(LIBRARY_OUTPUT_PATH ${exec_out_path})
  64. #指定库的位置,方便寻找
  65. link_directories(${LIB_PATH})
  66. link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_linux)
  67. link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_linux/HCNetSDKCom)
  68. link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_win64)
  69. link_directories(${CMAKE_SOURCE_DIR}/libs/hk_sdk_win64/HCNetSDKCom)
  70. link_directories(${LIB_FFMPEG})
  71. #=======================================================
  72. #*************** 启用一些模块和选项 ***************
  73. #=======================================================
  74. #设置MSVC的一些编译属性
  75. if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  76. #设置MSVC使用UTF-8
  77. add_compile_options(
  78. "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
  79. "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
  80. )
  81. #消除MSVC对SPDLOG的兼容性警告
  82. add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
  83. endif()
  84. #添加一些gcc的编译属性
  85. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  86. # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
  87. # #添加编译参数,这个参数会应用到全局,C和C++都会生效
  88. # add_compile_options(-Wall -O2)
  89. endif()
  90. #定义这个宏,海康SDK中使用了__linux__和__LINUX__两种,但是本机gcc只定义了__linux__
  91. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  92. add_compile_definitions(__LINUX__)
  93. endif()
  94. #给spdlog添加宏定义,使其支持%#等源文件相关的标志
  95. add_compile_definitions(SPDLOG_COMPILED_LIB)
  96. add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
  97. option(ENABLE_SPDLOG_STATIC_LIB "启用SPDLOG静态库" ON)
  98. #添加宏
  99. if(CMAKE_BUILD_TYPE MATCHES Debug)
  100. add_compile_definitions(C_DEBUG)
  101. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  102. add_compile_definitions(C_RELEASE)
  103. endif()
  104. #=========================================================
  105. #******************* 添加库和文件 ***********************
  106. #=========================================================
  107. #设置启用某些库的选项
  108. find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
  109. find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
  110. find_package(Qt5 COMPONENTS
  111. Widgets
  112. Core
  113. Network
  114. OpenGL
  115. REQUIRED
  116. )
  117. include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
  118. # include(${CMAKE_SOURCE_DIR}/External_Ex/Library_EX.cmake)
  119. # file(GLOB GLOBAL_SPDLOG_INC
  120. # )
  121. # file(GLOB GLOBAL_INC
  122. # ${CMAKE_SOURCE_DIR}/*.h
  123. # # ${CMAKE_SOURCE_DIR}/camera_so/*.h
  124. # )
  125. #包含头文件
  126. # include_directories(
  127. # )
  128. #set(QRC ${CMAKE_SOURCE_DIR}/*.qrc)
  129. #包含源文件
  130. file(GLOB GLOBAL_SRC
  131. # ${GLOBAL_INC}
  132. )
  133. #添加子文件夹,放在库的后面执行,先生成动态库
  134. add_subdirectory(show1)