QScint.cmake 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # QScint.cmake
  2. # 在模块化构建中,这个部分代表着构建 Qscintilla
  3. # 1. 静态化构建库时产出的目标为 libQSci.a
  4. # 2. 在此处可对 QSci 目标进行详细的构建计划
  5. option(NOTEPAD_BUILD_BY_SHARED "指定 Notepad 将构建为动态库" OFF)
  6. if(TRUE)
  7. # add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint)
  8. # file(GLOB MOC_HEADER src/qscint/src/Qsci/*.h)
  9. spark_file_glob(MOC_HEADER "src/qscint/src/Qsci/*.h")
  10. spark_add_source_paths(QSciSources
  11. src/qscint/src
  12. src/qscint/scintilla/lexers
  13. src/qscint/scintilla/lexlib
  14. src/qscint/scintilla/src
  15. src/qscint/scintilla/boostregex
  16. # src/qscint/src/Qsci
  17. # FAIL: only *.ui will spark_file_glob(MOC_HEADER ...)
  18. )
  19. if(NOTEPAD_BUILD_BY_SHARED)
  20. spark_add_library(QSci SHARED ${QSciSources} ${MOC_HEADER})
  21. else()
  22. spark_add_library(QSci STATIC ${QSciSources} ${MOC_HEADER})
  23. endif(NOTEPAD_BUILD_BY_SHARED)
  24. target_include_directories(QSci PRIVATE
  25. src/qscint/scintilla/boostregex
  26. src/qscint/scintilla/lexlib)
  27. target_include_directories(QSci PUBLIC
  28. src/qscint/src
  29. src/qscint/src/Qsci
  30. src/qscint/scintilla/src
  31. src/qscint/scintilla/include)
  32. if(USE_QT6)
  33. target_link_qt6(QSci)
  34. target_link_qt6_Core5Compat(QSci)
  35. target_link_qt6_PrintSupport(QSci)
  36. target_link_qt6_Concurrent(QSci)
  37. else()
  38. target_link_qt5(QSci)
  39. target_link_qt5_PrintSupport(QSci)
  40. target_link_qt5_Concurrent(QSci)
  41. endif(USE_QT6)
  42. endif(TRUE)
  43. # QSci 库构建时依赖了一些其它内容,像 PrintSupport,Concurrent 等
  44. # QSci 库构建...配置
  45. if(WIN32)
  46. # 在 Windows 中构建时,需要关注此库的构建形式,QScintilla 应该以何种方式编译
  47. target_compile_definitions(QSci
  48. PRIVATE
  49. SCINTILLA_QT #
  50. SCI_LEXER #
  51. INCLUDE_DEPRECATED_FEATURES #
  52. # 控制 QSCINTILLA_EXPORT 符号应为:
  53. # 构建时(导出),由外部使用时(导入)
  54. QSCINTILLA_MAKE_DLL # 在 Windows 中构建此库时应该采用 Q_DECL_EXPORT
  55. INTERFACE
  56. QSCINTILLA_DLL # 在 Windows 中使用此库时应该采用 Q_DECL_IMPORT
  57. )
  58. endif(WIN32)
  59. if(UNIX)
  60. # 在 Linux 中构建时,需要关注此库的构建形式,QScintilla 应该以何种方式编译
  61. target_compile_definitions(QSci
  62. PRIVATE
  63. SCINTILLA_QT #
  64. SCI_LEXER #
  65. INCLUDE_DEPRECATED_FEATURES #
  66. # QSCINTILLA_MAKE_DLL # 在 Linux 未使用 Q_DECL_EXPORT 、 Q_DECL_IMPORT
  67. # 控制 QSCINTILLA_EXPORT 符号应为留空
  68. )
  69. endif(UNIX)
  70. # 添加 QSci 目标属性与生成器调试信息
  71. spark_cmake_debug(
  72. ">>>>>>>>>>>>>>>>>>>>>>>>>>> QSci CMake Debug <<<<<<<<<<<<<<<<<<<<<<<<<<<"
  73. "QSci LINK_LIBRARIES: $<TARGET_PROPERTY:QSci,LINK_LIBRARIES>"
  74. "QSci COMPILE_DEFINITIONS: $<TARGET_PROPERTY:QSci,COMPILE_DEFINITIONS>"
  75. "QSci INTERFACE: $<TARGET_PROPERTY:QSci,INTERFACE>"
  76. "QSci TARGET_FILE_BASE_NAME: $<TARGET_FILE_BASE_NAME:QSci>"
  77. "QSci TARGET_FILE_NAME: $<TARGET_FILE_NAME:QSci>"
  78. ">>>>>>>>>>>>>>>>>>>>>>>>>>> QSci CMake Debug <<<<<<<<<<<<<<<<<<<<<<<<<<<"
  79. )