在 cmake 中使用预编译的 tensorflow

Posted

技术标签:

【中文标题】在 cmake 中使用预编译的 tensorflow【英文标题】:use pre-compiled tensorflow with cmake 【发布时间】:2016-06-28 12:58:04 【问题描述】:

我在 CLion 中建立了一个使用 CMake 的 c++ 项目。我正在使用各种第 3 方库,并且还想集成 Tensorflow

我已经尝试 bazelTensorflow 编译到共享库 libtensorflow.so 中,但仍然有很多依赖项(例如当前的 protobuf版本,一旦我这样做了,还有更多)我必须修复。

有没有办法使用标准的 Tensorflow git 存储库并以某种方式链接为 python 使用而预编译的库?或者有没有其他方便的方法?

Python 中的 Tensorflow 非常适合我。

【问题讨论】:

【参考方案1】:

我知道这个答案已经很晚了,但是我遇到了您的确切问题并且能够解决它。我创建了一个存储库here,它描述了如何准确地完成你想要的。要点是:

向包含所有必需 C++ 元素的 TensorFlow 存储库添加构建规则。 使用 Bazel 构建共享库并将所有标头复制到 /usr/local。 安装特定版本的 Protobuf 和 Eigen(这是通过脚本自动完成的)或将它们添加为外部依赖项。 使用给定文件配置您的 CMake 项目。

如果您有任何疑问或问题,请随时与我联系。

【讨论】:

为什么要把文件放到/usr/local?我可以把我的文件放在其他地方,让 Cmake 直接找到它们吗?感谢您对 cmake 的帮助【参考方案2】:

如果您使用的是 MacOS,使用自制软件、CMake 和 pkg_config 很容易。

首先使用 brew 获取 TensorFlow:

brew install libtensorflow

然后在CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(tf-inference)

find_package(PkgConfig)
pkg_check_modules(TensorFlow REQUIRED tensorflow)

link_directories($TensorFlow_LIBRARY_DIRS)
include_directories($TensorFlow_INCLUDE_DIRS)
add_compile_definitions($TensorFlow_CFLAGS_OTHER)

add_executable(tf-inference inference.cpp)
target_link_libraries(tf-inference $TensorFlow_LIBRARIES)

【讨论】:

以上是关于在 cmake 中使用预编译的 tensorflow的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CMake 中链接预编译库?

NDK开发使用cMake方式 - 添加其他的预编译库

cmake 预编译

cmake 怎么配置才能生成预编译文件和汇编文件

Android Studio外部本机构建预编译头

在 CMake 中链接外部预建库 [重复]