CMakeLists.txt 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. cmake_minimum_required(VERSION 3.22)
  2. project(Library_Project VERSION 1.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. # message(STATUS "CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}")
  12. if(CMAKE_SYSTEM_NAME MATCHES Windows)
  13. elseif(CMAKE_SYSTEM_NAME MATCHES Linux)
  14. # set(CMAKE_PREFIX_PATH "/home/Apple/Qt/Qt5.12.12/5.12.12/gcc_64")
  15. endif()
  16. # message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
  17. # message(STATUS "Compiler Version : ${CMAKE_CXX_COMPILER_VERSION}")
  18. # message(STATUS "Target System is ${CMAKE_SIZEOF_VOID_P} bit")
  19. #=========================================================
  20. #************** 指定可执行文件名称和位置 *****************
  21. #=========================================================
  22. #设置可执行文件名称
  23. # set(exec_name "Library")
  24. #包含子文件夹
  25. #include(${CMAKE_SOURCE_DIR}/CommonModule/common.cmake)
  26. #设置可执行文件和库的输出位置
  27. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  28. message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
  29. #设置可执行文件输出位置
  30. set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU)
  31. #设置库生成位置
  32. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU)
  33. if(CMAKE_BUILD_TYPE MATCHES Debug)
  34. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  35. else()
  36. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  37. endif()
  38. elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  39. message(STATUS "Using ${CMAKE_CXX_COMPILER_ID} Compiler")
  40. # string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus /MP")
  41. #设置可执行文件输出位置
  42. set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  43. set(LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  44. if(CMAKE_BUILD_TYPE MATCHES Debug)
  45. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  46. else()
  47. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  48. endif()
  49. #设置MSVC使用UTF-8
  50. add_compile_options(
  51. "$<$<CXX_COMPILER_ID:MSVC>:/utf-8>"
  52. # "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
  53. # "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
  54. )
  55. #消除MSVC对SPDLOG的兼容性警告
  56. add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
  57. endif()
  58. #指定库的位置,方便寻找
  59. link_directories(${LIB_PATH})
  60. #=========================================================
  61. #******************* 定义一些参数变量 *******************
  62. #=========================================================
  63. #定义一些宏
  64. if(CMAKE_BUILD_TYPE MATCHES Debug)
  65. add_compile_definitions(C_DEBUG)
  66. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  67. add_compile_definitions(C_RELEASE)
  68. endif()
  69. if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  70. add_compile_definitions(MSVC)
  71. elseif(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  72. add_compile_definitions(GNU)
  73. endif()
  74. #需要定义这个宏,才会使用编译好的动态库
  75. add_compile_definitions(SPDLOG_COMPILED_LIB)
  76. #给spdlog添加宏定义,使其支持%#等源文件相关的标志
  77. add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
  78. #使用spdlog的静态库
  79. option(ENABLE_SPDLOG_STATIC_LIB "Enable spdlog static library" ON)
  80. #=========================================================
  81. #********************* 搜索添加包 **********************
  82. #=========================================================
  83. find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
  84. find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
  85. find_package(Qt5 COMPONENTS
  86. Widgets
  87. Core
  88. # SerialPort
  89. Network
  90. # Multimedia
  91. Sql
  92. REQUIRED
  93. )
  94. include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
  95. include(${CMAKE_SOURCE_DIR}/External_Ex/Library_EX.cmake)
  96. #=========================================================
  97. #**************** 搜索添加头文件和源文件 *****************
  98. #=========================================================
  99. #包含头文件
  100. include_directories(
  101. )
  102. #包含源文件
  103. file(GLOB GLOBAL_SRC
  104. )
  105. #=========================================================
  106. #******************** 生成可执行程序 ********************
  107. #=========================================================
  108. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/mqtt)
  109. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/http)
  110. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/threadPool)
  111. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/ftp)
  112. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/OneThread)
  113. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/timer)
  114. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/time)
  115. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/VideoPlayer)
  116. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/xlsx)
  117. add_subdirectory(${CMAKE_SOURCE_DIR}/demo/DesignerPattern)
  118. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/ViewModel)
  119. # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/VideoPlayerGL)