170 lines
5.9 KiB
CMake
170 lines
5.9 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
project(chinese-segmentation LANGUAGES CXX)
|
|
|
|
set(VERSION_MAJOR 1)
|
|
set(VERSION_MINOR 1)
|
|
set(VERSION_MICRO 0)
|
|
set(CHINESE_SEGMENTATION_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO})
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
|
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
|
|
|
|
set(HEADERS
|
|
chinese-segmentation.h
|
|
common-struct.h
|
|
hanzi-to-pinyin.h
|
|
Traditional-to-Simplified.h
|
|
pinyin4cpp-common.h
|
|
libchinese-segmentation_global.h)
|
|
|
|
set(CHINESE_SEGMENTATION_SRC
|
|
Traditional-Chinese-Simplified-conversion/Traditional2Simplified_trie.cpp
|
|
Traditional-Chinese-Simplified-conversion/Traditional2Simplified_trie.h
|
|
Traditional-to-Simplified.cpp
|
|
Traditional-to-Simplified-private.h
|
|
chinese-segmentation.cpp
|
|
chinese-segmentation-private.h
|
|
cppjieba/DatTrie.hpp
|
|
cppjieba/DictTrie.hpp
|
|
cppjieba/FullSegment.hpp
|
|
cppjieba/HMMModel.hpp
|
|
cppjieba/HMMSegment.hpp
|
|
cppjieba/IdfTrie.hpp
|
|
cppjieba/Jieba.hpp
|
|
cppjieba/KeywordExtractor.hpp
|
|
cppjieba/MPSegment.hpp
|
|
cppjieba/MixSegment.hpp
|
|
cppjieba/PinYinTrie.hpp
|
|
cppjieba/PosTagger.hpp
|
|
cppjieba/PreFilter.hpp
|
|
cppjieba/QuerySegment.hpp
|
|
cppjieba/SegmentBase.hpp
|
|
cppjieba/SegmentTagged.hpp
|
|
cppjieba/TextRankExtractor.hpp
|
|
cppjieba/Unicode.hpp
|
|
cppjieba/idf-trie/idf-trie.cpp cppjieba/idf-trie/idf-trie.h
|
|
cppjieba/limonp/ArgvContext.hpp
|
|
cppjieba/limonp/BlockingQueue.hpp
|
|
cppjieba/limonp/BoundedBlockingQueue.hpp
|
|
cppjieba/limonp/BoundedQueue.hpp
|
|
cppjieba/limonp/Closure.hpp
|
|
cppjieba/limonp/Colors.hpp
|
|
cppjieba/limonp/Condition.hpp
|
|
cppjieba/limonp/Config.hpp
|
|
cppjieba/limonp/FileLock.hpp
|
|
cppjieba/limonp/ForcePublic.hpp
|
|
cppjieba/limonp/LocalVector.hpp
|
|
cppjieba/limonp/Logging.hpp
|
|
cppjieba/limonp/Md5.hpp
|
|
cppjieba/limonp/MutexLock.hpp
|
|
cppjieba/limonp/NonCopyable.hpp
|
|
cppjieba/limonp/StdExtension.hpp
|
|
cppjieba/limonp/StringUtil.hpp
|
|
cppjieba/limonp/Thread.hpp
|
|
cppjieba/limonp/ThreadPool.hpp
|
|
cppjieba/segment-trie/segment-trie.cpp
|
|
cppjieba/segment-trie/segment-trie.h
|
|
hanzi-to-pinyin.cpp
|
|
hanzi-to-pinyin-private.h
|
|
pinyin4cpp/pinyin4cpp-trie.cpp
|
|
pinyin4cpp/pinyin4cpp-trie.h
|
|
pinyin4cpp/pinyin4cpp_dataTrie.cpp
|
|
pinyin4cpp/pinyin4cpp_dataTrie.h
|
|
pinyin4cpp/pinyin4cpp_dictTrie.cpp
|
|
pinyin4cpp/pinyin4cpp_dictTrie.h
|
|
storage-base/cedar/cedar.h
|
|
storage-base/cedar/cedarpp.h
|
|
storage-base/darts-clone/darts.h
|
|
storage-base/storage-base.cpp
|
|
storage-base/storage-base.h
|
|
storage-base/storage-base.hpp)
|
|
|
|
add_library(chinese-segmentation SHARED
|
|
${CHINESE_SEGMENTATION_SRC}
|
|
${HEADERS}
|
|
)
|
|
|
|
include_directories(chinese-segmentation
|
|
storage-base/cedar
|
|
storage-base
|
|
cppjieba
|
|
cppjieba/limonp
|
|
pinyin4cpp
|
|
Traditional-Chinese-Simplified-conversion
|
|
)
|
|
|
|
target_link_libraries(chinese-segmentation PRIVATE
|
|
Qt${QT_VERSION_MAJOR}::Core
|
|
)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
set(CMAKE_CONFIG_INSTALL_DIR "/usr/share/cmake/chinese-segmentation")
|
|
set(HEADERS_INSTALL_DIR "/usr/include/chinese-segmentation")
|
|
set(PC_INSTALL_DIR "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig")
|
|
set(DICT_INSTALL_PATH "/usr/share/chinese-segmentation/res/dict")
|
|
add_compile_definitions(
|
|
VERSION="${CHINESE_SEGMENTATION_VERSION}"
|
|
DICT_INSTALL_PATH="${DICT_INSTALL_PATH}"
|
|
)
|
|
target_include_directories(chinese-segmentation INTERFACE $<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>)
|
|
|
|
configure_package_config_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/chinese-segmentation-config.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation-config.cmake"
|
|
INSTALL_DESTINATION ${CMAKE_CONFIG_INSTALL_DIR})
|
|
|
|
write_basic_package_version_file(
|
|
${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation-config-version.cmake
|
|
VERSION ${CHINESE_SEGMENTATION_VERSION}
|
|
COMPATIBILITY SameMajorVersion
|
|
)
|
|
|
|
configure_package_config_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/chinese-segmentation.pc.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation.pc"
|
|
INSTALL_DESTINATION ${PC_INSTALL_DIR})
|
|
|
|
set_target_properties(chinese-segmentation PROPERTIES
|
|
VERSION ${CHINESE_SEGMENTATION_VERSION}
|
|
SOVERSION ${VERSION_MAJOR}
|
|
OUTPUT_NAME chinese-segmentation
|
|
)
|
|
install(TARGETS chinese-segmentation
|
|
EXPORT chinese-segmentation
|
|
PUBLIC_HEADER DESTINATION ${HEADERS_INSTALL_DIR}
|
|
LIBRARY DESTINATION /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
|
)
|
|
install(EXPORT chinese-segmentation
|
|
FILE chinese-segmentation-targets.cmake
|
|
DESTINATION ${CMAKE_CONFIG_INSTALL_DIR})
|
|
install(FILES ${HEADERS} DESTINATION ${HEADERS_INSTALL_DIR})
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation.pc DESTINATION ${PC_INSTALL_DIR})
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation-config.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/chinese-segmentation-config-version.cmake
|
|
DESTINATION ${CMAKE_CONFIG_INSTALL_DIR})
|
|
set(DICT_FILES
|
|
dict/hmm_model.utf8
|
|
dict/idf.utf8
|
|
dict/jieba.dict.utf8
|
|
dict/stop_words.utf8
|
|
dict/user.dict.utf8
|
|
dict/pinyinWithoutTone.txt
|
|
dict/pos_dict/char_state_tab.utf8
|
|
dict/pos_dict/prob_emit.utf8
|
|
dict/pos_dict/prob_start.utf8
|
|
dict/pos_dict/prob_trans.utf8
|
|
pinyin4cpp/dict/singleWordPinyin.txt
|
|
pinyin4cpp/dict/wordsPinyin.txt
|
|
Traditional-Chinese-Simplified-conversion/dict/TraditionalChineseSimplifiedDict.txt
|
|
)
|
|
install(FILES ${DICT_FILES} DESTINATION ${DICT_INSTALL_PATH})
|
|
|
|
if (BUILD_TEST)
|
|
add_subdirectory(test)
|
|
endif ()
|
|
|
|
|
|
|