if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH) include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_OPT_ARCH_NATIVE_SUPPORTED) if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") # 添加下面這部分 else() CHECK_CXX_COMPILER_FLAG("/arch:AVX" COMPILER_OPT_ARCH_AVX_SUPPORTED) if (COMPILER_OPT_ARCH_AVX_SUPPORTED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX") endif() # end of 添加下面這部分 endif() endif()
cmake命令python
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 中可查看,對於你拿不許的參數,保持其默認便可。git
編譯 MSBuild /p:Configuration=Release /p:Platform=x64 /verbosity:detailed tensorflow.vcxproj
windows
這裏強調一點,Configuration定義的要與cmake時DCMAKE_BUILD_TYPE定義相同