以基于tensorflow模型的命名实体为例:
项目ner_cpp路径下有多个文件夹,./inlude ./src ./test 等等
如果想要把./src路径下的所有文件生成一个 xxx.so 或xxx.a的链接库,那么在src的目录下编写一个CMakeLists.txt文件
aux_source_directory(. DIR_SRCS)
# 生成链接库
add_library(NER SHARED ${DIR_SRCS})
上面的为动态链接库,最终生成libNER.so
aux_source_directory(. DIR_SRCS) 将当前目录(src文件夹下)所有源文件的文件名赋值给变量 DIR_SRCS
CMakeLists.txt中的add_library(NER SHARED ${DIR_SRCS})该指令是将DIR_SRCS
中的源文件生成链接文件,然后添加到工程中去。其中,NER表示库文件的名字,最终生成libNER.so
那么静态链接如下,生成libNER.a
aux_source_directory(. DIR_SRCS)
# 生成链接库
add_library (NER ${DIR_SRCS})
项目ner_cpp下的CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.8)
project(sample)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")
link_directories(
/home/tensorflow-r1.14/bazel-bin/tensorflow
/usr/local/lib
/usr/local/lib64
/home/n