You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
4.0 KiB

1 year ago
  1. # We can't build glog with gflags, unless gflags is pre-installed.
  2. # If build glog with pre-installed gflags, there will be conflict.
  3. set(OPENFST_ROOT ${LIB_BASE_DIR}/openfst-build)
  4. # We can't build glog with gflags, unless gflags is pre-installed.
  5. # If build glog with pre-installed gflags, there will be conflict.
  6. include(gflags)
  7. if(TARGET gflags)
  8. message(STATUS "${BoldGreen}Find Package gflags: ${gflags_FOUND}${ColourReset}")
  9. set_target_properties(gflags PROPERTIES INTERFACE_COMPILE_OPTIONS "-fPIC")
  10. endif()
  11. set(WITH_GFLAGS OFF CACHE BOOL "whether build glog with gflags" FORCE)
  12. include(glog)
  13. # 推荐手动构建这个openfst依赖,因为通过cmake构建这个库会失败。
  14. function(GRPC_INSTALL)
  15. # 推荐手动去构建项目,不然这些代码因为环境不兼容等原因会执行不成功
  16. message(STATUS "${BoldGreen}Install openfst: ${GLOG_BUILD_DIR}${ColourReset}")
  17. if(NOT EXISTS ${OPENFST_ROOT})
  18. execute_process(COMMAND mkdir -p "${OPENFST_ROOT}")
  19. else ()
  20. execute_process(COMMAND rm -rf "${OPENFST_ROOT}/*")
  21. endif ()
  22. # patch补丁必须打,不然会报glog无法动态识别这个库的方法,导致链接不成功。
  23. execute_process(
  24. COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/patch/openfst ${LIB_BASE_DIR}/openfst-src
  25. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
  26. message(STATUS "${BoldGreen}configure openfst${ColourReset}")
  27. #./configure --prefix=${openfst_SOURCE_DIR}/build --enable-static --disable-shared --with-pic
  28. execute_process(
  29. COMMAND ./configure --prefix=${OPENFST_ROOT} --with-pic
  30. WORKING_DIRECTORY ${LIB_BASE_DIR}/openfst-src )
  31. message(STATUS "${BoldGreen}copy openfst patch done!${ColourReset}")
  32. execute_process(
  33. COMMAND make -j4
  34. WORKING_DIRECTORY ${LIB_BASE_DIR}/openfst-src
  35. RESULT_VARIABLE configure_result
  36. )
  37. if(configure_result)
  38. message(FATAL_ERROR "${BoldRed}openfst项目构建不成功! ${ColourReset}")
  39. endif ()
  40. execute_process(
  41. COMMAND make --install
  42. WORKING_DIRECTORY ${LIB_BASE_DIR}/openfst-src)
  43. endfunction()
  44. if(LIB_BASE_DIR)
  45. # 下面这堆关键字是防止cmake出一堆无关的提示
  46. if(NOT GRAPH_TOOLS)
  47. set(HAVE_BIN OFF CACHE BOOL "Build the fst binaries" FORCE)
  48. set(HAVE_SCRIPT OFF CACHE BOOL "Build the fstscript" FORCE)
  49. endif()
  50. set(HAVE_COMPACT OFF CACHE BOOL "Build compact" FORCE)
  51. set(HAVE_CONST OFF CACHE BOOL "Build const" FORCE)
  52. set(HAVE_GRM OFF CACHE BOOL "Build grm" FORCE)
  53. set(HAVE_FAR OFF CACHE BOOL "Build far" FORCE)
  54. set(HAVE_PDT OFF CACHE BOOL "Build pdt" FORCE)
  55. set(HAVE_MPDT OFF CACHE BOOL "Build mpdt" FORCE)
  56. set(HAVE_LINEAR OFF CACHE BOOL "Build linear" FORCE)
  57. set(HAVE_LOOKAHEAD OFF CACHE BOOL "Build lookahead" FORCE)
  58. set(HAVE_NGRAM OFF CACHE BOOL "Build ngram" FORCE)
  59. set(HAVE_SPECIAL OFF CACHE BOOL "Build special" FORCE)
  60. else ()
  61. message(FATAL_ERROR "${BoldRed}LIB_BASE_DIR for openfst is not set! ${ColourReset}")
  62. endif ()
  63. find_path(OPENFST_INCLUDE_DIR fst/fst.h PATHS ${OPENFST_ROOT}/include)
  64. find_path(OPENFST_BINARY_DIR fstsymbols PATHS ${OPENFST_ROOT}/bin)
  65. find_path(OPENFST_LIBRARY_DIR libfst.a PATHS ${OPENFST_ROOT}/lib)
  66. find_library(fst NAMES fst PATHS ${OPENFST_ROOT}/lib)
  67. set(OPENFST_LIBRARYS fst ${GFLAGS_LIBRARY_NOTHREADS} ${GLOG_LIBRARY} dl)
  68. #验证库和文件是否被找到
  69. include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
  70. FIND_PACKAGE_HANDLE_STANDARD_ARGS(Openfst DEFAULT_MSG
  71. OPENFST_INCLUDE_DIR OPENFST_BINARY_DIR fst GFLAGS_LIBRARY_NOTHREADS GFLAGS_LIBRARY GLOG_LIBRARY OPENFST_LIBRARY_DIR)
  72. message("${BoldGreen}
  73. OPENFST_INCLUDE_DIR: ${OPENFST_INCLUDE_DIR}
  74. OPENFST_BINARY_DIR: ${OPENFST_BINARY_DIR}
  75. OPENFST_LIBRARY_DIR: ${OPENFST_LIBRARY_DIR}
  76. IMPORTED OPENFST_LIBRARYS: ${OPENFST_LIBRARYS}${ColourReset}")
  77. if(third_party_libraries)
  78. list(APPEND third_party_libraries $(OPENFST_LIBRARYS) )
  79. endif ()