官方编译参考:https://caffe2.ai/docs/getting-started.html?platform=windows&configuration=compile

官方的安装指导不全面,留了很多坑,不把坑填了会导致编译失败,本文的主要目的在于填坑,官方文档里说过的内容就不再详细介绍了。


一、下载源码

git clone --recursive https://github.com/caffe2/caffe2.git

         该步骤无需解释

二、配置cuda、python、cmake等第三方软件

        cuda不是必须的,可以编译only cpu版本;

        python我装的是anaconda的2.7,按照官方文档安装了各种python包,具体安装哪些模块请参考官方文档;

        cmake必须装,去官网下载安装包就可以;

三、修改caffe2脚本:

        这里是重点,下面开始填坑。我是2017年12月1日下载的caffe2源码,当你看到这篇文章的时候,有可能这些坑已经被官方更新填掉了,也有可能被官方挖出新的坑。

        1、修改“(源码根目录)\scripts\build_host_cmd.bat”

        我用VS2015 64bit编译,所以需要修改编译选项相关的cmake变量,如果你使用vs2017编译,则不需要修改该选项。在开头的@echo off下一行添加语句:set CMAKE_GENERATOR="Visual Studio 14 2015 Win64"

       

        2、修改“(源码根目录)\scripts\build_windows.bat”

        和二、1一样,我用VS2015 64bit编译,所以需要修改编译选项相关的cmake变量,如果你使用vs2017编译,则不需要修改该选项。在开头的@echo off下一行添加语句:set CMAKE_GENERATOR="Visual Studio 14 2015 Win64"

       

        该脚本中还有一些用于控制是否编译python接口、是否使用cuda等特性的开关变量,可自己根据需要修改。建议先用默认的设置进行编译验证,待编译成功后再修改这些变量重新编译,以免出错时不容易定位原因。

         3、修改"(源码根目录)\caffe2\cmake\Proto_buf.cmake"

        找到如下代码段:

            if (WIN32)

                find_package(Protobuf NO_MODULE)

            elseif (ANDROID OR IOS)

            ……

        这段代码会导致编译器找不到Protobuf模块,造成编译失败。按照下图所示修改,就是将if这段注释掉,并将后面的elseif修改为if。

        

        4、如果在二、2所述的build_windows.bat中将BUILD_PYTHON变量改为ON,即打开了python接口的编译选项,则还需要修改"(源码根目录)\caffe2\cmake\Dependencies.cmake"。如果不编译python接口,则该步骤可忽略。

        在if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND AND NUMPY_FOUND)下面一行添加如下语句:

        list(APPEND Caffe2_PYTHON_DEPENDENCY_LIBS ${PYTHON_LIBRARIES})

        这句话的作用是将python27.lib(我安装的anaconda是python2.7版本)添加到link选项里。如果不添加这句话,编译时会出现无法链接python27.lib的错误。不知道作者有没有在windows下编译过自己的作品,看样子应该是没有。

       5、添加CUDA和OpenCV支持,在build_windows.bat中,将USE_CUDA和BUILD_OPENCV设为ON,然后……然后……然后你得改一大堆东西,不是一句话两句话能说清的,十分酸爽……想开cuda和opencv的,还是等作者更新代码吧,我就不赘述了。大笑

       多说一句,vs2017编译带cuda的版本不成功,中途报了个莫名其妙的错误,至今不知何意。

       

四、编译

        进入带有python路径设置的命令行,anaconda直接启动Anaconda Prompt即可,切换路径到源码根目录,再进入scripts文件夹,运行build_windows.bat脚本,耐心等待编译完成。漫长的等待结束之后,如果你的人品足够好,应该就可以看到编译成功的提示了。可以用vs2015打开(源码根目录)/build下的vs解决方案,编译Debug等其他配置方案,或者进行跟踪调试,或者添加工程开发新程序。

       

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐