CMakeLists.txt 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. cmake_minimum_required(VERSION 3.12)
  2. project(SecurePlayAuxiliaryServer 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. # option(QT_5.12.12 "使用Qt5.12.12" OFF)
  12. # if(QT_5.12.12)
  13. # if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  14. # set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.12.12/5.12.12/mingw73_64")
  15. # elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  16. # set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.12.12/5.12.12/msvc2017_64/bin")
  17. # endif()
  18. # endif()
  19. #=========================================================
  20. #************* 设置可执行文件的名称和输出位置 *************
  21. #=========================================================
  22. #设置可执行文件和库位置,可能是qt tools的bug,选择32位依旧是64位编译器
  23. if(CMAKE_SYSTEM_NAME MATCHES "Linux")
  24. message(STATUS "Using Linux System")
  25. if(CMAKE_BUILD_TYPE MATCHES Debug)
  26. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
  27. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
  28. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  29. set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
  30. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
  31. endif()
  32. elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
  33. message(STATUS "Using Windows System")
  34. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  35. message(STATUS "Using Compiler : ${CMAKE_CXX_COMPILER_ID}")
  36. #设置日志库的位置,判断32位和64位,CMAKE_CL_64已经被废弃
  37. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  38. message(STATUS "Using 64bit Compiler")
  39. #设置可执行文件输出位置
  40. set(exec_out_path ${CMAKE_SOURCE_DIR}/../../bin_GNU_64)
  41. #设置库生成位置
  42. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../../bin_GNU_64)
  43. elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
  44. message(STATUS "Using 32bit Compiler")
  45. #设置可执行文件输出位置
  46. set(exec_out_path ${CMAKE_SOURCE_DIR}/../../bin_GNU_32)
  47. #设置库生成位置
  48. set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../../bin_GNU_32)
  49. endif()
  50. if(CMAKE_BUILD_TYPE MATCHES Debug)
  51. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  52. else()
  53. message(STATUS "编译类型:${CMAKE_BUILD_TYPE}")
  54. endif()
  55. elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  56. #不支持MSVC
  57. message(FATAL_ERROR "MSVC is not supported")
  58. endif()
  59. endif()
  60. #设置库和可执行文件的输出位置
  61. set(EXECUTABLE_OUTPUT_PATH ${exec_out_path})
  62. set(LIBRARY_OUTPUT_PATH ${exec_out_path})
  63. #指定库的位置,方便寻找
  64. link_directories(${BUILD_LIB_PATH})
  65. #=======================================================
  66. #*************** 启用一些模块和选项 ***************
  67. #=======================================================
  68. #设置MSVC的一些编译属性
  69. if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
  70. #设置MSVC使用UTF-8
  71. add_compile_options(
  72. "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
  73. "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
  74. )
  75. #消除MSVC对SPDLOG的兼容性警告
  76. add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
  77. endif()
  78. #添加一些gcc的编译属性
  79. if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
  80. # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
  81. # #添加编译参数,这个参数会应用到全局,C和C++都会生效
  82. # add_compile_options(-Wall -O2)
  83. endif()
  84. #定义一些宏
  85. if(CMAKE_BUILD_TYPE MATCHES Debug)
  86. add_compile_definitions(C_DEBUG)
  87. elseif(CMAKE_BUILD_TYPE MATCHES Release)
  88. add_compile_definitions(C_RELEASE)
  89. endif()
  90. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  91. option(ENABLE_SPDLOG_STATIC_LIB "使用SPDLOG静态库" OFF)
  92. elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
  93. endif()
  94. #需要定义这个宏,才会使用编译好的动态库
  95. add_compile_definitions(SPDLOG_COMPILED_LIB)
  96. #给spdlog添加宏定义,使其支持%#等源文件相关的标志,其实就是设置日志级别
  97. add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
  98. #=========================================================
  99. #******************* 搜索库添加库 ***********************
  100. #=========================================================
  101. # find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
  102. # find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
  103. find_package(Qt5 COMPONENTS
  104. # Widgets
  105. Core
  106. # Network
  107. # Sql
  108. REQUIRED
  109. )
  110. #包含外部通用库
  111. include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
  112. #=========================================================
  113. #***************** 添加头文件和源文件 ********************
  114. #=========================================================
  115. #包含源文件
  116. file(GLOB GLOBAL_SRC
  117. )
  118. #=========================================================
  119. #******************* 生成可执行文件 *********************
  120. #=========================================================
  121. add_subdirectory(SecurePlayAuxServer)