windows 下編譯tensorflow c++庫過程記錄
1. 準備
- windows 10系統、3.6GHz cpu、16G 內存
- visual studio 2017 or 2015
- 下載安裝git
- 下載安裝cmake
- 下載安裝swigwin 如果不需要python bindings,可以跳過
- clone tensorflow
- 切換tensorflow到要進行編譯的git tag
- 修改tensorflow/contrib/cmake/CMakeLists.txt
if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH) include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG(
2. 步驟
- cmd 運行vcvarsall.bat amd64設置指定環境參數
- cd目錄:tensorflow\contrib\cmake
- 創建build目錄,cd build
-
cmake命令
cmake .. -G "Visual Studio 15 2017 Win64" -T host=x64 -DCMAKE_BUILD_TYPE=Release ^
-Dtensorflow_VERBOSE=ON ^
-Dtensorflow_ENABLE_GRPC_SUPPORT=OFF ^
-Dtensorflow_BUILD_PYTHON_BINDINGS=OFF ^
-Dtensorflow_BUILD_CC_EXAMPLE=OFF ^
-Dtensorflow_BUILD_SHARED_LIB=ON ^
-Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX
#-DSWIG_EXECUTABLE=swig.exe的路徑
#-DPYTHON_EXECUTABLE=python.exe的路徑(anaconda3路徑/python.exe)
#-DPYTHON_LIBRARIES=python35.lib的路徑(anaconda3路徑/libs/python35.lib)
上面的命令說明:
-G 指定生成目標版本。命令行輸入cmake -G,可以查看可選的版本列表。
-T host=64 是網上很多教程忽略的一點,我之前也用VS2017編譯過,因為沒有指定-T host=64,導致使用了32位的編譯器,出現fatal error C1060: "編譯器的堆空間不足"的錯誤。
tensorflow_VERBOSE 編譯時輸出具體信息,設為ON些許降低編譯速度。
tensorflow_ENABLE_GRPC_SUPPORT GRPC支持,如果你有服務器/客戶端的業務需求,或者跨語言GRPC使用需求的話,選擇ON。
tensorflow_BUILD_PYTHON_BINDINGS 需要編譯python包的話選擇ON。
tensorflow_BUILD_CC_EXAMPLE 編譯測試代碼。
tensorflow_BUILD_SHARED_LIB 編譯共享庫。
tensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX2 選擇AVX還是AVX2,取決於你的CPU是否支持該指令集。
tensorflow_ENABLE_GPU 編譯是否使用GPU。
tensorflow_OPTIMIZE_FOR_NATIVE_ARCH可設為OFF也可以不設置,會自動判斷。
其他可選參數在 tensorflow\tensorflow\contrib\cmake\CMakeLists.txt 中可查看,對於你拿不準的參數,保持其默認即可。 -
編譯
MSBuild /p:Configuration=Release /p:Platform=x64 /verbosity:detailed tensorflow.vcxproj
這裏強調一點,Configuration定義的要與cmake時DCMAKE_BUILD_TYPE定義相同 - 運行測試
windows 下編譯tensorflow c++庫過程記錄