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.

66 lines
3.1 KiB

1 year ago
1 year ago
1 year ago
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-src)
  4. set(openfst_BUILD ${LIB_BASE_DIR}/openfst-build)
  5. # We can't build glog with gflags, unless gflags is pre-installed.
  6. # If build glog with pre-installed gflags, there will be conflict.
  7. include(gflags)
  8. if(TARGET gflags)
  9. message(STATUS "${BoldGreen}Find Package gflags: ${gflags_FOUND}${ColourReset}")
  10. set_target_properties(gflags PROPERTIES INTERFACE_COMPILE_OPTIONS "-fPIC")
  11. endif()
  12. set(WITH_GFLAGS OFF CACHE BOOL "whether build glog with gflags" FORCE)
  13. include(glog)
  14. execute_process(COMMAND rm -r ${openfst_BUILD})
  15. if(NOT EXISTS ${openfst_BUILD})
  16. # 推荐手动去构建项目,不然这些代码因为环境不兼容等原因会执行不成功
  17. message(STATUS "${BoldGreen}Install openfst: ${GLOG_BUILD_DIR}${ColourReset}")
  18. #./configure --prefix=${openfst_SOURCE_DIR}/build --enable-static --disable-shared --with-pic
  19. execute_process(COMMAND mkdir ${openfst_BUILD})
  20. execute_process(
  21. COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/patch/openfst ${LIB_BASE_DIR}/openfst-src
  22. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  23. )
  24. message(STATUS "${BoldGreen}configure openfst${ColourReset}")
  25. execute_process(
  26. COMMAND ./configure --prefix=${openfst_BUILD} --with-pic
  27. WORKING_DIRECTORY ${openfst_ROOT})
  28. # patch补丁必须打,不然会报glog无法动态识别这个库的方法,导致链接不成功。
  29. message(STATUS "${BoldGreen}copy openfst patch done!${ColourReset}")
  30. execute_process(
  31. COMMAND cmake --build . --target install
  32. WORKING_DIRECTORY ${openfst_ROOT})
  33. execute_process(
  34. COMMAND cmake --install .
  35. WORKING_DIRECTORY ${openfst_ROOT})
  36. endif()
  37. # gflags和glog现在被我安装到了系统盘下/usr/lib/x86_64-linux-gnu
  38. # 下面这堆关键字是防止cmake出一堆无关的提示
  39. if(NOT GRAPH_TOOLS)
  40. set(HAVE_BIN OFF CACHE BOOL "Build the fst binaries" FORCE)
  41. set(HAVE_SCRIPT OFF CACHE BOOL "Build the fstscript" FORCE)
  42. endif()
  43. set(HAVE_COMPACT OFF CACHE BOOL "Build compact" FORCE)
  44. set(HAVE_CONST OFF CACHE BOOL "Build const" FORCE)
  45. set(HAVE_GRM OFF CACHE BOOL "Build grm" FORCE)
  46. set(HAVE_FAR OFF CACHE BOOL "Build far" FORCE)
  47. set(HAVE_PDT OFF CACHE BOOL "Build pdt" FORCE)
  48. set(HAVE_MPDT OFF CACHE BOOL "Build mpdt" FORCE)
  49. set(HAVE_LINEAR OFF CACHE BOOL "Build linear" FORCE)
  50. set(HAVE_LOOKAHEAD OFF CACHE BOOL "Build lookahead" FORCE)
  51. set(HAVE_NGRAM OFF CACHE BOOL "Build ngram" FORCE)
  52. set(HAVE_SPECIAL OFF CACHE BOOL "Build special" FORCE)
  53. include_directories(${openfst_ROOT}/src/include)
  54. if (EXISTS ${openfst_BUILD}/src/lib/libfst.so)
  55. add_library(fst SHARED IMPORTED)
  56. set_property(TARGET fst PROPERTY IMPORTED_LOCATION ${openfst_BUILD}/src/lib/libfst.so)
  57. message(STATUS "${BoldGreen}Find Library libfst.so: ${openfst_BUILD}/src/lib/${ColourReset}")
  58. else ()
  59. message(FATAL_ERROR "${BoldRed}Can't find openfst library from: ${openfst_BUILD}/src/lib ${ColourReset}")
  60. endif ()
  61. list(APPEND third_party_libraries fst gflags_nothreads_static glog dl)