在 cmake 中使用预编译的 tensorflow
Posted
技术标签:
【中文标题】在 cmake 中使用预编译的 tensorflow【英文标题】:use pre-compiled tensorflow with cmake 【发布时间】:2016-06-28 12:58:04 【问题描述】:我在 CLion 中建立了一个使用 CMake 的 c++ 项目。我正在使用各种第 3 方库,并且还想集成 Tensorflow。
我已经尝试 bazel 将 Tensorflow 编译到共享库 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的主要内容,如果未能解决你的问题,请参考以下文章