ifDEFINED APPVEYOR (
echo Setting Appveyor defaults
ifNOTDEFINED MSVC_VERSION set MSVC_VERSION=14 ::vs的版本
ifNOTDEFINED WITH_NINJA set WITH_NINJA=0ifNOTDEFINED CPU_ONLY set CPU_ONLY=0ifNOTDEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto
ifNOTDEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
ifNOTDEFINED USE_NCCL set USE_NCCL=0ifNOTDEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0ifNOTDEFINED PYTHON_VERSION set PYTHON_VERSION=3 ::python的版本
ifNOTDEFINED BUILD_PYTHON set BUILD_PYTHON=1ifNOTDEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1ifNOTDEFINED BUILD_MATLAB set BUILD_MATLAB=0ifNOTDEFINED PYTHON_EXE set PYTHON_EXE=python
ifNOTDEFINED RUN_TESTS set RUN_TESTS=0ifNOTDEFINED RUN_LINT set RUN_LINT=0ifNOTDEFINED RUN_INSTALL set RUN_INSTALL=1
:: Set python 2.7 with conda as the default python
if!PYTHON_VERSION!EQU2 (
set CONDA_ROOT=C:\Miniconda-x64
)
::设置python3的路径
:: Set python 3.5 with conda as the default python
if!PYTHON_VERSION!EQU3 (
set CONDA_ROOT=D:\Anaconda\envs\tensorflow
) else (
:: Change the settings here to match your setup
:: Change MSVC_VERSION to 12 to use VS 2013ifNOTDEFINED MSVC_VERSION set MSVC_VERSION=14
:: Change to 1 to use Ninja generator (builds much faster)
ifNOTDEFINED WITH_NINJA set WITH_NINJA=0
:: Change to 1 to build caffe without CUDA support
ifNOTDEFINED CPU_ONLY set CPU_ONLY=0
:: Change to generate CUDA code for one of the following GPU architectures
:: [Fermi Kepler Maxwell Pascal All]
ifNOTDEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto
:: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs
ifNOTDEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
:: Set to 1 to use NCCL
ifNOTDEFINED USE_NCCL set USE_NCCL=0
:: Change to 1 to build a caffe.dll
ifNOTDEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
:: Change to 3if using python 3.5 (only 2.7 and 3.5 are supported)
ifNOTDEFINED PYTHON_VERSION set PYTHON_VERSION=3
:: Change these options for your needs.
ifNOTDEFINED BUILD_PYTHON set BUILD_PYTHON=1ifNOTDEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1ifNOTDEFINED BUILD_MATLAB set BUILD_MATLAB=0
:: If python is on your path leave this alone
ifNOTDEFINED PYTHON_EXE set PYTHON_EXE=python
:: Run the tests
ifNOTDEFINED RUN_TESTS set RUN_TESTS=0
:: Run lint
ifNOTDEFINED RUN_LINT set RUN_LINT=0
:: Build the install target
ifNOTDEFINED RUN_INSTALL set RUN_INSTALL=1
)
:: Set the appropriate CMake generator
:: Use the exclamation mark ! below to delay the
:: expansion of CMAKE_GENERATOR
if%WITH_NINJA%EQU0 (
if "%MSVC_VERSION%"=="14" (
set CMAKE_GENERATOR=Visual Studio 142015 Win64
)
if "%MSVC_VERSION%"=="12" (
set CMAKE_GENERATOR=Visual Studio 122013 Win64
)
if "!CMAKE_GENERATOR!"=="" (
echo ERROR: Unsupported MSVC version
exit /B 1
)
) else (
set CMAKE_GENERATOR=Ninja
)
......
:: Setup the environement for VS x64
set batch_file=!VS%MSVC_VERSION%0COMNTOOLS!..\..\VC\vcvarsall.bat
:: echo!VS%MSVC_VERSION%0COMNTOOLS!..\..
:: set batch_file=D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
call "%batch_file%" amd64
:: Configure using cmake and using the caffe-builder dependencies
:: Add -DCUDNN_ROOT=C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda ^
:: below to use cuDNN
cmake -G"!CMAKE_GENERATOR!" ^
-DBLAS=Open ^
-DCMAKE_BUILD_TYPE:STRING=%CMAKE_CONFIG% ^
-DBUILD_SHARED_LIBS:BOOL=%CMAKE_BUILD_SHARED_LIBS% ^
-DBUILD_python:BOOL=%BUILD_PYTHON% ^
-DBUILD_python_layer:BOOL=%BUILD_PYTHON_LAYER% ^
-DBUILD_matlab:BOOL=%BUILD_MATLAB% ^
-DCPU_ONLY:BOOL=%CPU_ONLY% ^
-DCOPY_PREREQUISITES:BOOL=1 ^
-DINSTALL_PREREQUISITES:BOOL=1 ^
-DUSE_NCCL:BOOL=!USE_NCCL! ^
-DCUDA_ARCH_NAME:STRING=%CUDA_ARCH_NAME% ^
-DCUDNN_ROOT=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 ^
"%~dp0\.."
该文件可以按照上面的方式进行修改。
5. 编译caffe
编译caffe是最为复杂和困难的一步,里面有很多很多的坑。
打开cmd,执行build_win.cmd
problem 1:找不到可以使用的编译器版本
solution :把C:\Program Files(x86)\Windows Kits\8.1\bin\x86添加到环境变量path中,然后把C:\Program Files (x86)\Windows Kits\8.1\bin\x86里的rc.exe&rcdll.dll复制到C:\Program Files(x86)\Micrsoft Visual Studio 14.0\VC\bin ,再次执行build_win.cmd即可。
以上内容参考[博客][2]:https://blog.csdn.net/Uranus1024/article/details/78430308
如果还是找不到编译器版本,那说明vs2015安装的程序包无法满足我们的需求,打开vs2015 installers,选择修改,我们需要安装的包有Visual C++&windows 10 SDK(10.0.14393)这几个程序包是必须要安装的,可以检查一下是否安装齐全,vs2015的自动安装可能不包括这些程序包。
problem 2:无法下载依赖库
solution:依赖库有很大的可能行不能下载,在这里提供一个可用的[下载地址][3],根据我们的需要,下载libraries_v140_x64_py35_1.1.0.tar.bz2,然后将该压缩包放置在C:\Users\XXX\.caffe\dependencies\download文件夹下,同时修改caffe\cmake\WindowsDownloadPrebuiltDependencies.cmake文件70-80行,将他们都注释掉。
problem 3:找不到pthread.h头文件
solution: [pthread下载地址][4],下载后解压,发现有3个文件夹,我们主要使用的文件夹是Pre-built.2,首先将里面的include和lib文件夹里的所有文件复制到vs安装目录的include和lib文件夹下,然后将dll里的x64文件夹里的两个文件复制到C:\Windows\System32下,将x86文件夹里的5个文件复制到C:\Windows\SysWOW64,最后在vs的安装目录的include里找到pthread.h文件,33-35行添加