CMakeLists.txt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. cmake_minimum_required(VERSION 3.20)
  2. project(Notepad-- VERSION 2.0.0)
  3. # -------------- Notepad -- 全局构建配置 ------------- #
  4. option(USE_QT6 "使用 Qt6 进行编译本项目与随带所有内容" OFF)
  5. include(cmake/SparkEnvConfig.cmake)
  6. include(cmake/SparkMacrosConfig.cmake)
  7. if(USE_QT6)
  8. include(cmake/SparkFindQt6Config.cmake)
  9. else()
  10. include(cmake/SparkFindQt5Config.cmake)
  11. endif(USE_QT6)
  12. include(cmake/SparkMacrosExtendConfig.cmake)
  13. include(cmake/SparkCMakeDebugConfig.cmake)
  14. # ----------------- 构建之前 全局定义 ----------------- #
  15. # 在 Windows 中开启 UNICODE 以支持 TCHAR 功能
  16. if(WIN32)
  17. add_compile_definitions(_UNICODE= UNICODE=)
  18. endif()
  19. # 符合 2.0.0 代码预期的版本处理, 核心编辑器组件 2.11
  20. add_compile_definitions(TEST_PRE)
  21. # ----------------- 构建 QSci 库 ----------------- #
  22. if(TRUE)
  23. include(cmake/modules/QScint.cmake)
  24. endif(TRUE)
  25. # ----------------- 构建 Notepad-- 程序 ----------------- #
  26. if(TRUE)
  27. include(cmake/modules/Notepad--.cmake)
  28. endif(TRUE)
  29. # ----------------- 构建 Notepad-- 插件 ----------------- #
  30. add_subdirectory(src/plugin)
  31. # ----------------- Notepad-- 其它主线构建相关 ----------------- #
  32. option(USE_WINDOWS_UNIVERSAL "通用 Windows 平台构建" OFF)
  33. option(USE_WINDOWS_MINGW "通用 Windows 平台 MinGW 构建" OFF)
  34. option(USE_WINDOWS_MSVC "通用 Windows 平台 MSVC 构建" OFF)
  35. #
  36. option(WINDOWS_DEPLOY_QT "通用 Windows 平台 Qt 部署" OFF)
  37. option(WINDOWS_DEPLOY_QT5 "通用 Windows 平台指定 Qt5 部署 windeployqt" OFF)
  38. option(WINDOWS_DEPLOY_QT6 "通用 Windows 平台指定 Qt6 部署 windeployqt" OFF)
  39. #
  40. option(USE_LINUX_UNIVERSAL "通用 Linux 平台构建" OFF)
  41. option(USE_LINUX_DEBIAN "通用 Debian Linux 平台构建" OFF)
  42. option(USE_LINUX_APPIMAGE "通用 Appimage Linux 平台构建" OFF)
  43. option(USE_LINUX_UOS "独立 Linux 平台的 Uos 构建" OFF)
  44. #
  45. option(USE_MACOSX_UNIVERSAL "通用 MacOSX 平台构建" OFF)
  46. # 使用 windows.cmake / linux.cmake / macos.cmake 维护构建.
  47. # 在 Windows 中此处将由通用构建、MinGW 构建、MSVC 构建组成
  48. if(WIN32)
  49. # 通用 Windows 平台构建,一切的起始
  50. if(USE_WINDOWS_UNIVERSAL)
  51. include(cmake/platforms/windows-universal.cmake)
  52. # 为 Windows 中构建的应用进行 windeployqt 的配方
  53. include(cmake/platforms/windows-deployqt.cmake)
  54. # 通用平台的 Windows MinGW 构建
  55. if(USE_WINDOWS_MINGW)
  56. # include(cmake/platforms/windows-mingw.cmake)
  57. endif()
  58. # 通用平台的 Windows MSVC 构建
  59. if(USE_WINDOWS_MSVC)
  60. # include(cmake/platforms/windows-msvc.cmake)
  61. endif()
  62. # 其它 Windows 平台的构建
  63. else()
  64. # include(cmake/platforms/windows-other.cmake)
  65. endif(USE_WINDOWS_UNIVERSAL)
  66. # 在 Linux 中此处将由通用构建、Debian 打包构建、Appimage 打包构建、Uos 打包构建组成
  67. elseif(UNIX AND NOT APPLE AND NOT WIN32 AND NOT ANDROID)
  68. # 通用 Linux 平台构建,一切的起始
  69. if(USE_LINUX_UNIVERSAL)
  70. include(cmake/platforms/linux-universal.cmake)
  71. # 通用 Linux 平台的 Debian deb 构建
  72. if(USE_LINUX_DEBIAN)
  73. include(cmake/platforms/linux-debian.cmake)
  74. endif()
  75. # 通用 Linux 平台的 Appimage 构建
  76. if(USE_LINUX_APPIMAGE)
  77. include(cmake/platforms/linux-appimage.cmake)
  78. endif()
  79. # 独立 Linux 平台的 Uos 构建
  80. elseif(USE_LINUX_UOS)
  81. include(cmake/platforms/linux-uos.cmake)
  82. # 其它 Linux 平台的构建
  83. else()
  84. # include(cmake/platforms/linux-other.cmake)
  85. endif(USE_LINUX_UNIVERSAL)
  86. # 通用 MacOSX 平台的构建
  87. elseif(APPLE)
  88. # 通用 MacOSX 平台构建,一切的起始
  89. if(USE_MACOSX_UNIVERSAL)
  90. include(cmake/platforms/macos-universal.cmake)
  91. endif(USE_MACOSX_UNIVERSAL)
  92. endif()
  93. # ----------------- Notepad-- 其它主线构建相关 ----------------- #
  94. if(USE_QT6)
  95. # Qt5/Qt6 兼容性构建检查文件检查
  96. include(cmake/platforms/utils.cmake)
  97. qt5_qt6_compatible_check(cmake/qt5_qt6_compatible_check QT56_PASS)
  98. if(NOT QT56_PASS)
  99. message(SEND_ERROR "[${QT56_PASS}] Qt5/Qt6 兼容性检查文件当前未能检查通过,不建议构建 Qt6。")
  100. else()
  101. message(NOTICE "[${QT56_PASS}] Qt5/Qt6 兼容性检查文件当前检查通过。")
  102. endif(NOT QT56_PASS)
  103. endif(USE_QT6)
  104. # 在全局结束位置使用 cmake-debug 目标来驱动内部调试信息打印
  105. spark_generator_cmake_debug(cmake-debug)