CMakeLists.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. cmake_minimum_required(VERSION 3.10)
  2. project(ACAServerSettingLibrary 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. #******************* 设置可执行文件名称 ******************
  10. #=========================================================
  11. #=========================================================
  12. #***************** 设置可执行文件输出位置 ****************
  13. #=========================================================
  14. #设置可执行文件和库位置,可能是qt tools的bug,选择32位依旧是64位编译器
  15. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  16. # message(STATUS "Using Linux System")
  17. if(CMAKE_BUILD_TYPE MATCHES Debug)
  18. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
  19. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
  20. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  21. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
  22. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
  23. endif()
  24. elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
  25. # message(STATUS "Using Windows System")
  26. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  27. message(STATUS "Using Compiler : ${CMAKE_CXX_COMPILER_ID}")
  28. #设置日志库的位置,判断32位和64位,CMAKE_CL_64已经被废弃
  29. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  30. # message(STATUS "Using 64bit Compiler")
  31. #设置可执行文件输出位置
  32. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
  33. #设置库生成位置
  34. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
  35. elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
  36. # message(STATUS "Using 32bit Compiler")
  37. #设置可执行文件输出位置
  38. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
  39. #设置库生成位置
  40. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
  41. endif()
  42. elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  43. #不支持MSVC
  44. # message(FATAL_ERROR "MSVC is not supported")
  45. #设置可执行文件输出位置
  46. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  47. #设置库生成位置
  48. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
  49. endif()
  50. elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  51. # message(STATUS "Using MacOS System")
  52. if(CMAKE_BUILD_TYPE MATCHES Debug)
  53. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
  54. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
  55. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  56. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
  57. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
  58. endif()
  59. else()
  60. message(FATAL_ERROR "Unknown System")
  61. endif()
  62. #设置库和可执行文件的输出位置
  63. set(EXECUTABLE_OUTPUT_PATH ${exec_out_path})
  64. set(LIBRARY_OUTPUT_PATH ${BUILD_LIB_PATH})
  65. #指定库的位置,方便寻找
  66. link_directories(${BUILD_LIB_PATH})
  67. link_directories(${BUILD_LIB_PATH}/Debug)
  68. link_directories(${BUILD_LIB_PATH}/Release)
  69. #=========================================================
  70. #******************* 定义一些参数变量 *******************
  71. #=========================================================
  72. #设置MSVC的一些编译属性
  73. if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  74. #设置MSVC使用UTF-8,这一句是必须的,否则中文会乱码,添加这一句,也不是设置为UTF-8 with BOM编码格式了
  75. add_compile_options(
  76. "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
  77. "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
  78. )
  79. #消除MSVC对SPDLOG的兼容性警告
  80. add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
  81. #添加MSVC的宏定义
  82. add_compile_definitions(MSVC)
  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 -g -O0 -Werror=return-type)
  89. # add_compile_options(-O2)
  90. #添加GCC的宏定义
  91. add_compile_definitions(GCC)
  92. endif()
  93. #定义一些宏
  94. if(CMAKE_BUILD_TYPE MATCHES Debug)
  95. add_compile_definitions(C_DEBUG)
  96. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  97. add_compile_definitions(C_RELEASE)
  98. endif()
  99. if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  100. add_compile_definitions(MSVC)
  101. elseif(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  102. add_compile_definitions(GNU)
  103. endif()
  104. #需要定义这个宏,才会使用编译好的动态库
  105. add_compile_definitions(SPDLOG_COMPILED_LIB)
  106. #给spdlog添加宏定义,使其支持%#等源文件相关的标志
  107. add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
  108. #使用spdlog的静态库
  109. option(ENABLE_SPDLOG_STATIC_LIB "Enable spdlog static library" ON)
  110. #=========================================================
  111. #********************* 搜索添加包 **********************
  112. #=========================================================
  113. find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
  114. find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
  115. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
  116. Widgets
  117. Core
  118. # SerialPort
  119. Network
  120. REQUIRED
  121. )
  122. #Qt5
  123. if(QT_VERSION_MAJOR EQUAL 5)
  124. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
  125. OpenGL
  126. REQUIRED
  127. )
  128. #Qt6
  129. elseif(QT_VERSION_MAJOR EQUAL 6)
  130. find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
  131. OpenGLWidgets
  132. REQUIRED
  133. )
  134. endif(QT_VERSION_MAJOR EQUAL 5)
  135. include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
  136. # include(${CMAKE_SOURCE_DIR}/External_Ex/Library_EX.cmake)
  137. #=========================================================
  138. #**************** 搜索添加头文件和源文件 *****************
  139. #=========================================================
  140. #包含头文件
  141. include_directories(
  142. )
  143. #包含源文件
  144. file(GLOB GLOBAL_SRC
  145. )
  146. #=========================================================
  147. #******************** 生成可执行程序 ********************
  148. #=========================================================
  149. add_subdirectory(${CMAKE_SOURCE_DIR}/SettingLibrary)
  150. add_subdirectory(${CMAKE_SOURCE_DIR}/show1)
  151. add_subdirectory(${CMAKE_SOURCE_DIR}/show2)