首页 > 其他分享 >cmake

cmake

时间:2023-06-08 11:45:00浏览次数:29  
标签:CMAKE cc ##-- PYTORCH decoder cmake DIR

cmake_minimum_required(VERSION 3.4.1)##---指定cmake的最小版本
set(TARGET wenet)##---将字符串wenet 副给TARGET
project(${TARGET} CXX)##---指定工程名字,和语言,cxx代表c++
set(CMAKE_CXX_STANDARD 14)##---
include(ExternalProject)

##--CMAKE_SOURCE_DIR工程顶层目录
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/kaldi # for not changing c++ header names in kaldi source files
) ##--添加头文件搜索路径,可添加多个地址
set(CMAKE_VERBOSE_MAKEFILE on) ##---显示执行构建过程中详细的信息(比如为了得到更详细的出错信息)
set(build_DIR ${CMAKE_SOURCE_DIR}/../../../build)
string(REPLACE "-Wl,--exclude-libs,libgcc_real.a" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
##--将${CMAKE_EXE_LINKER_FLAGS}中的"-Wl,--exclude-libs,libgcc_real.a"替换为"", 并赋值给CMAKE_EXE_LINKER_FLAGS

set(openfst_BINARY_DIR ${build_DIR}/wenet-openfst-android-1.0.1.aar/jni)
include_directories(${openfst_BINARY_DIR}/include)##--添加头文件搜索路径,可添加多个地址
link_directories(${openfst_BINARY_DIR}/${ANDROID_ABI})##--向工程添加多个特定的库文件搜索路径
link_libraries(log gflags_nothreads glog fst)##--Link libraries to all targets added later. 上一步添加了库的搜索路径,这一步将log fst等链接到targets

# Pytorch
file(GLOB PYTORCH_INCLUDE_DIRS "${build_DIR}/pytorch_android*.aar/headers") ##--Generate a list of files that match the "${build_DIR}/pytorch_android*.aar/headers" and store it into the PYTORCH_INCLUDE_DIRS
file(GLOB PYTORCH_LINK_DIRS "${build_DIR}/pytorch_android*.aar/jni/${ANDROID_ABI}")
find_library(PYTORCH_LIBRARY pytorch_jni
PATHS ${PYTORCH_LINK_DIRS}
NO_CMAKE_FIND_ROOT_PATH
)###--This command is used to find a library. A cache entry, or a normal variable if NO_CACHE is specified, named by <VAR> is created to store the result of this command.
find_library(FBJNI_LIBRARY fbjni
PATHS ${PYTORCH_LINK_DIRS} ##-- PATHS Specify directories to search in addition to the default locations.
NO_CMAKE_FIND_ROOT_PATH##--Do not use the CMAKE_FIND_ROOT_PATH variable.
)
include_directories(
${PYTORCH_INCLUDE_DIRS}
${PYTORCH_INCLUDE_DIRS}/torch/csrc/api/include
)##--添加头文件搜索路径

# utils
add_library(utils STATIC
utils/string.cc
utils/utils.cc
)##--生成静态库文件

# frontend
add_library(frontend STATIC
frontend/feature_pipeline.cc
frontend/fft.cc
)##--生成静态库文件

target_link_libraries(frontend PUBLIC utils)##--为frontend添加需要链接的共享库utils

# kaldi: wfst based decoder
add_subdirectory(kaldi)##--向当前工程添加存放源文件的子目录,并编译子目录中的CMakeLists.txt。 子目录CMakeLists.txt生成的库 能直接在本CMakeLists.txt中使用

# decoder
add_library(decoder STATIC
decoder/context_graph.cc
decoder/ctc_endpoint.cc
decoder/ctc_prefix_beam_search.cc
decoder/ctc_wfst_beam_search.cc
decoder/torch_asr_decoder.cc
decoder/torch_asr_model.cc
post_processor/post_processor.cc
)##--生成静态库文件
target_link_libraries(decoder PUBLIC kaldi-decoder utils ${PYTORCH_LIBRARY} ${FBJNI_LIBRARY})##--为decoder添加需要链接的共享库,,kaldi-decoder是由add_subdirectory(kaldi)生成的库

## link_libraries():Specify libraries or flags to use when linking any targets created later in the current directory or below by commands such as add_executable() or add_library().
link_libraries(utils frontend decoder android)##--Link libraries to all targets added later.
add_library(${TARGET} SHARED wenet.cc)##--生成动态库文件

add_executable(decoder_main bin/decoder_main.cc) ##--生成可执行文件
target_link_libraries(decoder_main PUBLIC libc++_shared.so)##--为decoder_main添加需要链接的共享库

标签:CMAKE,cc,##--,PYTORCH,decoder,cmake,DIR
From: https://www.cnblogs.com/wieneralan/p/17465728.html

相关文章

  • 双笙仔佯谬_小彭老师_CMake课程笔记
    目录CMake第三方库可以configure,install等CMake可以通过-D选项设置编译器和cpp版本cmake-Bbuild-DCMAKE_CXX_COMPILER=/usr/bin/gcc-6可以指定使用gcc-6编译cmake-Bbuild-DCMAKE_CXX_STANDARD=14用c++14版本使用add_libaray生成动态链接库或静态链接库add_liba......
  • Ubuntu升级Cmake的正确方式
     Ubuntu升级Cmake的正确方式某些软件包编译时需要高版本的Cmake,因此需要升级Cmake。不能使用sudoapt-getremovecmake卸载低版本cmake后再重装高版本,这样做会导致之前编译和安装的很多库一起被卸载!!! 正确步骤是:去https://cmake.org/files/下载所需版本的源码。也可......
  • CMakeLists.txt 编写模板
     新建文件  CMakeLists.txt #设置cmake的最低版本cmake_minimum_required(VERSION2.8)#指定为C++11版本set(CMAKE_CXX_STANDARD11)#设置工程名称project(wss)message(${PROJECT_SOURCE_DIR})set(SRC_LIST${PROJECT_SOURCE_DIR}/src/websocket_s......
  • ubuntu 20.04安装(升级)cmake
    ubuntu20.04安装(升级)cmake-知乎(zhihu.com)    ......
  • CMakeLists --- install和uninstall
    install假设生成了以下几个文件:静态库target1,动态库target2,可执行文件target3 1.安装文件至指定位置#只安装静态库install(TARGETStarget1LIBRARYDESTINATIONlib)#安装静态库,动态库,可执行文件install(TARGETStarget1target2target3LIBRARYDESTINATIONli......
  • [转]关于Visual Studio:如何使用cmake检测64位MSVC?
    1、如何使用cmake检测64位MSVC?2、关于VisualStudio:如何使用cmake检测64位MSVC?......
  • CMake入门
    CMakecmake的定义是--高级编译配置工具当多人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候就需要用到------CMake所有操作都是通过编译CMakeLists.txt来完成的官方网站是www.cmake.org学习CMake的目的,为将来处理大型的C/C++......
  • [CMake] CMake学习笔记
    自己的学习和使用总结,还不完善,不定时更新。一.简介cmake是一款高级编译配置工具;所有操作都是通过编译CMakeLists.txt来完成的;CMake官方全部推荐使用大写指令;学习目的:为将来处理大型的C/C++、Java项目做准备;环境:Ubuntu:20.04cmake:3.16.3简单尝试:用C++写......
  • CMake Commands
    cmake_minimum_requiredcmake_minimum_required(VERSION<min>[...<policy_max>][FATAL_ERROR])#限制CMake的版本支持范围cmake_minimum_required(VERSION3.16.3)#限制CMake最低版本3.16.3cmake_minimum_required(VERSION3.16.3...3.20.0)#限制CMake版本最低3.16.3,只要C......
  • CMake Variables
    变量说明CMAKE_SOURCE_DIR源代码所在目录就是根cmakelists.txt所在目录CMAKE_BINARY_DIR跑cmake命令的目录CMAKE_BUILD_TYPE构建类型DebugReleaseRelWithDebInfoMinSizeRelCMAKE_MODULE_PATHcmake的模块路径以;分隔RUNTIME_OUTPUT_DIRECTORYCMAKE_C_......