QScint.cmake 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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_MAKE_DLL # 在 Windows 中构建此库时应该采用 Q_DECL_EXPORT
  53. # 并且在 Windows 中使用此库时应该采用 Q_DECL_IMPORT
  54. # 控制 QSCINTILLA_EXPORT 符号应为:
  55. # 构建时(导出),由外部使用时(导入)
  56. )
  57. endif(WIN32)
  58. if(UNIX)
  59. # 在 Linux 中构建时,需要关注此库的构建形式,QScintilla 应该以何种方式编译
  60. target_compile_definitions(QSci
  61. PRIVATE
  62. SCINTILLA_QT #
  63. SCI_LEXER #
  64. INCLUDE_DEPRECATED_FEATURES #
  65. # QSCINTILLA_MAKE_DLL # 在 Linux 未使用 Q_DECL_EXPORT 、 Q_DECL_IMPORT
  66. # 控制 QSCINTILLA_EXPORT 符号应为留空
  67. )
  68. endif(UNIX)