pkg_check_modules hunspell and pinyin

This commit is contained in:
Rick Vogel 2022-11-03 16:48:04 +01:00
parent c6087845a4
commit 92a475f335
7 changed files with 119 additions and 41 deletions

View File

@ -20,7 +20,7 @@ jobs:
artifact: "windows_msvc.7z", artifact: "windows_msvc.7z",
build_type: "Release", build_type: "Release",
cc: "cl", cc: "cl",
cxx: "cl", cxx: "cl",
environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat",
archiver: "7z a", archiver: "7z a",
generators: "Visual Studio 17 2022", generators: "Visual Studio 17 2022",
@ -299,6 +299,16 @@ jobs:
set-env: "true" set-env: "true"
tools-only: "false" tools-only: "false"
- name: Install hunspell for Ubuntu
if: startsWith(matrix.config.name, 'Ubuntu')
run: |
sudo apt-get install -y libhunspell-dev
- name: Install pinyin for Ubuntu
if: startsWith(matrix.config.name, 'Ubuntu')
run: |
sudo apt-get install -y libimepinyin-dev
- name: Configure - name: Configure
shell: bash shell: bash
run: | run: |
@ -310,7 +320,10 @@ jobs:
-G "${{ matrix.config.generators }}" \ -G "${{ matrix.config.generators }}" \
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
-DCMAKE_INSTALL_PREFIX:PATH=instdir \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \
-D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \
-DENABLE_HUNSPELL:BOOL=ON \
-DENABLE_PINYIN:BOOL=ON
- name: Build - name: Build
shell: bash shell: bash
run: cmake --build . --config ${{ matrix.config.build_type }} run: cmake --build . --config ${{ matrix.config.build_type }}

View File

@ -58,6 +58,26 @@ elseif(NOT "${Qt6_DIR}" STREQUAL "")
set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
endif() endif()
# optional package hunspell
if(NOT UNIX AND ENABLE_HUNSPELL)
message(WARNING "Feature 'hunspell' only available for UNIX!")
unset(ENABLE_HUNSPELL CACHE)
endif()
# optional package pinyin
if(NOT UNIX AND ENABLE_PINYIN)
message(WARNING "Feature 'pinyin' only available for UNIX!")
unset(ENABLE_PINYIN CACHE)
endif()
if(ENABLE_HUNSPELL)
include(cmake/QSkinnyOptionalHunspell.cmake)
endif()
if(ENABLE_PINYIN)
include(cmake/QSkinnyOptionalPinyin.cmake)
endif()
if(TRUE) if(TRUE)
message(STATUS "\${Qt} : ${Qt}") message(STATUS "\${Qt} : ${Qt}")
message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}") message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}")

View File

@ -0,0 +1,20 @@
find_package(PkgConfig)
pkg_check_modules(PKG_HUNSPELL QUIET hunspell)
find_path(HUNSPELL_INCLUDE_DIRS
NAMES hunspell.hxx
PATH_SUFFIXES hunspell
HINTS ${PKG_HUNSPELL_INCLUDE_DIRS})
find_library(HUNSPELL_LIBRARIES
NAMES ${PKG_HUNSPELL_LIBRARIES} hunspell hunspell-1.8 hunspell-1.7 hunspell-1.6 libhunspell
HINTS ${PKG_HUNSPELL_LIBRARY_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HUNSPELL
REQUIRED_VARS HUNSPELL_LIBRARIES HUNSPELL_INCLUDE_DIRS
VERSION_VAR PKG_HUNSPELL_VERSION)
mark_as_advanced(HUNSPELL_INCLUDE_DIRS HUNSPELL_LIBRARIES)
add_library(hunspell SHARED IMPORTED GLOBAL)
set_target_properties(hunspell PROPERTIES IMPORTED_LOCATION ${HUNSPELL_LIBRARIES})
target_include_directories(hunspell
INTERFACE
${HUNSPELL_INCLUDE_DIRS})

View File

@ -0,0 +1,20 @@
find_package(PkgConfig)
pkg_check_modules(PKG_PINYIN QUIET pinyin)
find_path(PINYIN_INCLUDE_DIRS
NAMES pinyinime.h
PATH_SUFFIXES pinyin LibIME/libime/pinyin
HINTS ${PKG_PINYIN_INCLUDE_DIRS})
find_library(PINYIN_LIBRARIES
NAMES ${PKG_PINYIN_LIBRARIES} IMEPinyin imepinyin ime libime libimepinyin
HINTS ${PKG_PINYIN_LIBRARY_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PINYIN
REQUIRED_VARS PINYIN_LIBRARIES PINYIN_INCLUDE_DIRS
VERSION_VAR PKG_PINYIN_VERSION)
mark_as_advanced(PINYIN_INCLUDE_DIRS PINYIN_LIBRARIES)
add_library(pinyin SHARED IMPORTED GLOBAL)
set_target_properties(pinyin PROPERTIES IMPORTED_LOCATION ${PINYIN_LIBRARIES})
target_include_directories(pinyin
INTERFACE
${PINYIN_INCLUDE_DIRS})

View File

@ -49,8 +49,8 @@ option(BUILD_QSKDLL "Build qskinny as shared library" ON)
option(BUILD_EXAMPLES "Build qskinny examples" ON) option(BUILD_EXAMPLES "Build qskinny examples" ON)
option(BUILD_PLAYGROUND "Build qskinny playground" ON) option(BUILD_PLAYGROUND "Build qskinny playground" ON)
option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON)
option(ENABLE_PINYIN "Enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config option(ENABLE_PINYIN "UNIX ONLY OPTION: Enable romanization system for standard mandarin chinese" OFF)
option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config option(ENABLE_HUNSPELL "UNIX ONLY OPTION: Enable spell checker" OFF)
option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON) option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON)
option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON)
option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF) option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF)

View File

@ -10,31 +10,33 @@ list(APPEND TARGET_OTHER_FILES
metadata.json) metadata.json)
if(ENABLE_PINYIN) if(ENABLE_PINYIN)
if(UNIX) list(APPEND TARGET_HEADERS
# TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_HEADERS list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h) ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp)
else()
message(WARNING "Feature 'pinyin' currently only available for UNIX!")
endif()
endif() endif()
if(ENABLE_HUNSPELL) if(ENABLE_HUNSPELL)
if(UNIX) list(APPEND TARGET_HEADERS
# TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_HEADERS list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h) ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp)
list(APPEND TARGET_SOURCES
${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp)
else()
message(WARNING "Feature 'hunspell' currently only available for UNIX!")
endif()
endif() endif()
add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES})
if(ENABLE_PINYIN)
target_link_libraries(${TARGET_NAME}
PRIVATE
pinyin)
endif()
if(ENABLE_HUNSPELL)
target_link_libraries(${TARGET_NAME}
PRIVATE
hunspell)
endif()
if(BUILD_QSKDLL) if(BUILD_QSKDLL)
target_compile_definitions(${TARGET_NAME} target_compile_definitions(${TARGET_NAME}
PRIVATE PRIVATE

View File

@ -363,29 +363,18 @@ list(APPEND TARGET_SOURCES
inputpanel/QskVirtualKeyboard.cpp) inputpanel/QskVirtualKeyboard.cpp)
if(ENABLE_PINYIN) if(ENABLE_PINYIN)
if(UNIX) list(APPEND TARGET_HEADERS
target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) # TODO required? inputpanel/QskPinyinTextPredictor.h)
# TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin
list(APPEND TARGET_HEADERS
inputpanel/QskPinyinTextPredictor.h)
list(APPEND TARGET_SOURCES list(APPEND TARGET_SOURCES
inputpanel/QskPinyinTextPredictor.cpp) inputpanel/QskPinyinTextPredictor.cpp)
else()
message(WARNING "Feature 'pinyin' currently only available for UNIX!")
endif()
endif() endif()
if(ENABLE_HUNSPELL) if(ENABLE_HUNSPELL)
if(UNIX) list(APPEND TARGET_HEADERS
# TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell inputpanel/QskHunspellTextPredictor.h)
list(APPEND TARGET_HEADERS list(APPEND TARGET_SOURCES
inputpanel/QskHunspellTextPredictor.h) inputpanel/QskHunspellTextPredictor.cpp)
list(APPEND TARGET_SOURCES
inputpanel/QskHunspellTextPredictor.cpp)
else()
message(WARNING "Feature 'hunspell' currently only available for UNIX!")
endif()
endif() endif()
set(TARGET_NAME qskinny) set(TARGET_NAME qskinny)
@ -433,6 +422,20 @@ if (Qt_VERSION_MAJOR VERSION_GREATER "5")
${Qt}::OpenGLPrivate) ${Qt}::OpenGLPrivate)
endif() endif()
if(ENABLE_HUNSPELL)
target_link_libraries(${TARGET_NAME}
PRIVATE
hunspell)
endif()
if(ENABLE_PINYIN)
target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN)
target_link_libraries(${TARGET_NAME}
PRIVATE
pinyin)
endif()
set_target_properties(${TARGET_NAME} set_target_properties(${TARGET_NAME}
PROPERTIES PROPERTIES
AUTOMOC ON AUTOMOC ON