QScint.cmake 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. if(APPLE)
  38. # Is there anything missing?
  39. # MacExtras?
  40. endif(APPLE)
  41. else()
  42. target_link_qt5(QSci)
  43. target_link_qt5_PrintSupport(QSci)
  44. target_link_qt5_Concurrent(QSci)
  45. if(APPLE)
  46. find_package(Qt5 COMPONENTS MacExtras)
  47. target_link_libraries(QSci Qt5::MacExtras)
  48. endif(APPLE)
  49. endif(USE_QT6)
  50. endif(TRUE)
  51. # QSci 库构建时依赖了一些其它内容,像 PrintSupport,Concurrent 等
  52. # QSci 库构建...配置
  53. if(WIN32)
  54. # 在 Windows 中构建时,需要关注此库的构建形式,QScintilla 应该以何种方式编译
  55. target_compile_definitions(QSci
  56. PRIVATE
  57. SCINTILLA_QT #
  58. SCI_LEXER #
  59. INCLUDE_DEPRECATED_FEATURES #
  60. QSCINTILLA_MAKE_DLL # 在 Windows 中构建此库时应该采用 Q_DECL_EXPORT
  61. # 并且在 Windows 中使用此库时应该采用 Q_DECL_IMPORT
  62. # 控制 QSCINTILLA_EXPORT 符号应为:
  63. # 构建时(导出),由外部使用时(导入)
  64. )
  65. endif(WIN32)
  66. if(UNIX)
  67. # 在 Linux 中构建时,需要关注此库的构建形式,QScintilla 应该以何种方式编译
  68. target_compile_definitions(QSci
  69. PRIVATE
  70. SCINTILLA_QT #
  71. SCI_LEXER #
  72. INCLUDE_DEPRECATED_FEATURES #
  73. # QSCINTILLA_MAKE_DLL # 在 Linux 未使用 Q_DECL_EXPORT 、 Q_DECL_IMPORT
  74. # 控制 QSCINTILLA_EXPORT 符号应为留空
  75. )
  76. endif(UNIX)