在win10 VS2015环境下编译TensorFlow C++ API

由于项目需求,需要将Python环境下训练的TensorFlow模型转移至C++环境进行部署,花了一天时间成功编译了TensorFlow C++ API,期间也踩了一些坑,在此记录编译的过程。

笔者主要参考了TensorFlow的官方文档https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/cmake/README.md

具体步骤如下:

1.环境准备

WIN10,VS2015

安装Swigwin-3.0.12

安装Cmake,一个较新的版本即可

安装git,注意添加git环境变量

下载TensorFlow1.8源码https://github.com/tensorflow/tensorflow/tree/r1.8/tensorflow

2.用CMake-GUI预编译

在win10 VS2015环境下编译TensorFlow C++ API

source code路径选择tensorflow/contrib/cmake

输出路径自行设置,本文选择D:/tfcpp

点击configure,这时cmake会报错project files may be invalid,这时由于未设置Swigwin-3.0.12路径导致的,设置路径后继续config,这时不会报错了。

笔者对相关编译选项设置如下:

在win10 VS2015环境下编译TensorFlow C++ API

在win10 VS2015环境下编译TensorFlow C++ API

根据TensorFlow官方教程

在win10 VS2015环境下编译TensorFlow C++ API

这两个选项必须选上,笔者尝试如果不选择这两个选项,会报找不到snappy.h文件的错误

接下来点击generate,生成VS工程

3.vs2015编译

在编译之前,有三个注意事项:

1.挂*,编译过程中需要下载文件,网络不通会导致文件下载失败

2.用管理员模式进入VS2015,否则会出现,找不到“#include "tensorflow/core/framework/device_attributes.pb_text.h"这个错误,推测可能是因为程序在C盘,权限不够造成的

3.注意将最大并行项目生成数设置为1,如下图

在win10 VS2015环境下编译TensorFlow C++ API

否则会出现compiler is out of heap space这一错误,之后点击生成项目即可

看网上很多博客都说需要编译3-4个小时才能完成,但是笔者在i7环境下只编译了1个多小时,除了上面遇到的三个问题之外,基本按照TensorFlow官方文档就编译成功了。