windows-universal.cmake 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # windows-universal.cmake
  2. # 此构建表示,在 Windows 中以通用平台构建方式进行构建此内容
  3. # 为 Notepad-- 通用构建的设计安装结构
  4. #
  5. # /bin 在 Windows 中标准的程序位置
  6. # Notepad--.exe
  7. # plugin/
  8. # themes
  9. #
  10. # /include/ 在 Windows 中提供一系列可提供插件开发的头文件
  11. # NotepadPlugin/
  12. # pluginGl.h
  13. # QSci/
  14. # qscint/scintilla/
  15. #
  16. # /lib/ 在 Windows 中提供一个用于插件开发的核心依赖文件
  17. # NotepadPlugin/
  18. # libQSci.so
  19. #
  20. if(CMAKE_HOST_WIN32)
  21. include(cmake/SparkInstallMacrosConfig.cmake)
  22. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  23. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  24. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  25. include(CMakePackageConfigHelpers)
  26. include(GNUInstallDirs)
  27. # 定义插件配置安装位置
  28. # set(CMAKE_INSTALL_PREFIX "/usr") # 仅限 Linux ,Windows 中不使用
  29. set(NOTEPAD_PLUGIN NotepadPlugin)
  30. # 定义开发插件时的配置目录与 CMake 模块文件名称
  31. set(NOTEPAD_PLUGIN_CONFIG ${NOTEPAD_PLUGIN}Config.cmake)
  32. # 定义一些扩展内容,主要是提供给 CMake 模块文件填充
  33. set(NOTEPAD_PLUGIN_CORELIB QSci) # QSci 为构建的 QScintllia 库
  34. # 定义在插件开发的 CMake 模块中,Notepad-- 是否是基于 QT5 实现
  35. # 并自动为插件开发层自动开启相关 Qt 依赖组件
  36. # 此部分逻辑将自动提供给 add_notepad_plugin 自行处理
  37. set(NOTEPAD_BUILD_BY_QT5 TRUE)
  38. set(NOTEPAD_BUILD_BY_QT6 FALSE)
  39. # 定义在平台中插件应该安装的位置(待确定)
  40. # 定义在插件开发的 CMake 模块中,Notepad-- 是否将提供 "插件安装目录(位置)"
  41. set(NOTEPAD_PLUGIN_EXTERNAL_PLUGIN_INSTALL_DIRECTORY "")
  42. # 这些是在此部分安装时使用,但不被用于填充 NotepadPlugin.cmake.in 的内容
  43. set(NOTEPAD_PLUGIN_INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/${NOTEPAD_PLUGIN})
  44. set(NOTEPAD_PLUGIN_LIBDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${NOTEPAD_PLUGIN})
  45. # 将 NOTEPAD_PLUGIN_INCLUDEDIR NOTEPAD_PLUGIN_LIBDIR 填充到 cmake 文件
  46. configure_package_config_file(cmake/NotepadPluginConfig.cmake.in
  47. ${CMAKE_BINARY_DIR}/${NOTEPAD_PLUGIN_CONFIG}
  48. INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${NOTEPAD_PLUGIN})
  49. # 安装 cmake 文件
  50. spark_install_file(${CMAKE_INSTALL_LIBDIR}/cmake/${NOTEPAD_PLUGIN}
  51. ${CMAKE_BINARY_DIR}/${NOTEPAD_PLUGIN_CONFIG})
  52. # 安装头插件接口文件
  53. spark_install_file(${NOTEPAD_PLUGIN_INCLUDEDIR}
  54. src/include/pluginGl.h)
  55. # 安装插件所需要的Qsci文件
  56. spark_install_directory(${NOTEPAD_PLUGIN_INCLUDEDIR}
  57. src/qscint/src/Qsci)
  58. # 安装开发插件高级功能所需要的内容
  59. spark_install_directory(${NOTEPAD_PLUGIN_INCLUDEDIR}/qscint
  60. src/qscint/scintilla)
  61. # 导出 QSci 的头文件(从插件实现层面来看,目前是使用*.h 与 pluginGl.h
  62. # 但从 Qsci 层面来看,*.h 使用的是 #include <Qsci/*.h> ,所以此部分不被使用)
  63. # spark_file_glob(QSci_HEADERS src/qscint/src/Qsci/*.h src/include/pluginGl.h)
  64. # set_target_properties(QSci PROPERTIES PUBLIC_HEADER "${QSci_HEADERS}")
  65. # 导出 Notepad-- 的接口文件(从逻辑层面来看,目前已经在前面安装了接口文件,所以此部分不被使用)
  66. # spark_file_glob(Notepad_HEADERS src/include/pluginGl.h)
  67. # set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${QSci_HEADERS}")
  68. # 安装项目文件与 QSci 文件
  69. install(TARGETS ${PROJECT_NAME} QSci
  70. RUNTIME DESTINATION bin
  71. LIBRARY DESTINATION ${NOTEPAD_PLUGIN_LIBDIR}
  72. ARCHIVE DESTINATION ${NOTEPAD_PLUGIN_LIBDIR}
  73. PUBLIC_HEADER DESTINATION ${NOTEPAD_PLUGIN_INCLUDEDIR}
  74. )
  75. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  76. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  77. # ------------------ INSTALL PLUGIN CONFIG ------------------ #
  78. endif(CMAKE_HOST_WIN32)