Tensorflow之編譯window平臺下基於c/c++使用tensorflow
最近在考慮將tensorflow的工程遷移到window平臺下進行,由於linux和mac平臺在官網上有對應的c/c++介面的安裝說明,而window平臺則需要自己編譯。所以現將編譯過程記錄如下:
一、環境準備
1. vs2015
2. swigwin-3.0.12。下載連結為 http://swig.org/download.html 。下載之後解壓縮即可。
3. Cmake , 下載連結為:https://cmake.org/download/ 。下載之後解壓縮即可,但是要配置環境變數,把對應的cmake.exe檔案放入對應的系統路徑中。
4. git 和python
5. 在環境變數中將C:\Windows\Microsoft.NET\Framework64\v4.0.30319加入環境變數(為了使用MSBuild)
二、編譯步驟(Release)
1. 首先git下tensorflow的原始碼,具體地址可參見源原始碼編譯那篇部落格。
2. 在tensorflow/tensorflow/contrib/cmake/目錄下建立build
3. 在build目錄下面執行cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=D:/swigwin-3.0.12/swig.exe
-DPYTHON_EXECUTABLE=D:/Python/Python35/python.exe -DPYTHON_LIBRARIES=D:/Python/Python35/libs/python35.lib
4. 執行
set PreferredToolArchitecture = x64
MSBuild /p:Configuration=Release ALL_BUILD.vcxproj
執行成功之後會在對應的目錄下出現下述列表
其中tensorflow.lib和tensorflow.dll即為所需要的檔案。
5. 使用和驗證
1. 在 vs 中新建一個工程(控制檯檔案和空白項均可)。在工程中右擊——屬性——c/c++——常規——附加包含目錄,在該目錄下新增E:\tensorflow
E:\tensorflow\tensorflow\contrib\cmake\build
E:\tensorflow\tensorflow\contrib\cmake\build\external\eigen_archive
E:\tensorflow\tensorflow\contrib\cmake\build\protobuf\src\protobuf\src
E:\tensorflow\tensorflow\contrib\cmake\build\external\nsync\public
2. 右鍵——專案——新增——現有項,找到對應包含tensorflow.lib的目錄。加入lib連結。
3. 右鍵——屬性——c/c++——前處理器,然後在裡面加入PLATFORM_WINDOWS
4. 輸入程式碼並執行
#include <stdio.h>
#include <stdlib.h>
#include <tensorflow\core\public\version.h>
int main(void)
{
printf("Hellow from Tensorflow c library version %s\n", TF_VERSION_STRING);
system("pause");
return 0;
}
如果想在一個已經有的工程中加入tensorlfow的程式碼,可以在工程的屬性下面,匯入上述對應的tensorflow相關依賴和連結庫即可。
三、一些警告
1. 一般在編譯完之後會有如下介面,該介面不用管。
2. 在編譯過程有時候會報\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退 出,程式碼為 1。 [D:\tensorflow-master\tensorflow\contrib\cmake\build\grpc.vcxproj]
此時在cmakelist中將grpc設定為off在重新編譯即可。