CMakeLists.txt 5.3 KB

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