cmake_minimum_required(VERSION 3.13) project(vosk-api CXX) set(vosk_version "0.3.45") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_EXTENSIONS OFF) add_library(vosk src/language_model.cc src/model.cc src/recognizer.cc src/spk_model.cc src/vosk_api.cc ) find_package(kaldi REQUIRED) find_package(OpenBLAS REQUIRED) set(vosk_depends kaldi-online2 kaldi-rnnlm Threads::Threads fst kaldi-ivector kaldi-nnet3 kaldi-chain kaldi-nnet2 kaldi-cudamatrix kaldi-decoder kaldi-lat kaldi-lm kaldi-hmm kaldi-feat kaldi-transform kaldi-gmm kaldi-tree kaldi-util kaldi-matrix kaldi-base fstngram OpenBLAS::OpenBLAS) if (ANDROID) set(vosk_depends ${vosk_depends} log) endif() target_link_libraries(vosk PUBLIC ${vosk_depends} ) target_include_directories(vosk PUBLIC ${CMAKE_INSTALL_PREFIX}/include ) if (MSVC) target_compile_options(vosk PRIVATE /bigobj) #else () # target_compile_options(vosk PRIVATE -Wa,-mbig-obj) endif () target_include_directories(vosk PUBLIC $ ) include(CMakePackageConfigHelpers) # Generate cmake configuration scripts set(vosk_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated) set(vosk_VERSION_CONFIG ${vosk_GENERATED_DIR}/voskConfigVersion.cmake) set(vosk_PROJECT_CONFIG ${vosk_GENERATED_DIR}/voskConfig.cmake) set(vosk_TARGETS_EXPORT_NAME voskTargets) set(vosk_CONFIG_INSTALL_DIR lib/cmake/vosk) set(vosk_NAMESPACE "vosk::") # Create a version config file write_basic_package_version_file(${vosk_VERSION_CONFIG} VERSION ${vosk_version} COMPATIBILITY SameMajorVersion) # Create a project config file configure_file(${PROJECT_SOURCE_DIR}/Config.cmake.in ${vosk_PROJECT_CONFIG} @ONLY) # Install to the specified directory install(FILES ${vosk_VERSION_CONFIG} ${vosk_PROJECT_CONFIG} DESTINATION ${vosk_CONFIG_INSTALL_DIR}) install(EXPORT ${vosk_TARGETS_EXPORT_NAME} NAMESPACE ${vosk_NAMESPACE} DESTINATION ${vosk_CONFIG_INSTALL_DIR}) # Set standard installation directories set(RUNTIME_DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) set(LIBRARY_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) set(ARCHIVE_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) set(INCLUDES_DESTINATION ${CMAKE_INSTALL_PREFIX}/include) install(TARGETS vosk EXPORT ${vosk_TARGETS_EXPORT_NAME} RUNTIME DESTINATION ${RUNTIME_DESTINATION} LIBRARY DESTINATION ${LIBRARY_DESTINATION} ARCHIVE DESTINATION ${ARCHIVE_DESTINATION}) include(GNUInstallDirs) install(TARGETS vosk DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES src/vosk_api.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vosk-api)