mini-caffe/3rdparty/src/ 目录下引用了openblas和protobuf依赖项,最好git下载完整代码,并分别替换openblas和protobuf文件夹。
2. 编译protobuf
3rdparty\lib\libopenblas.lib 已经自带,protobuf需要编译。
3rdparty\src\protobuf\cmake\cmakelist.txt , 用cmake生成vs2013工程,
(如果cmake提示找不到gmock, 可以从 https://github.com/google/googlemock 下载一份,放在3rdparty\src\protobuf下,文件名为gmock。或者从tests.cmake里直接删除gmock相关的检查)。
在3rdparty\src\protobuf\cmake\路径下新建build文件夹,打开cmake3.7进行编译,关闭-Dprotobuf_BUILD_TESTS和-Dprotobuf_MSVC_STATIC_RUNTIME选项,如下图所示:
点击configure,显示configure done后;再点击generate,显示generatedone后,打protobuf.sln工程文件,编译libprotobuf和protoc两个工程,分别编译Debug和Release版本。(可能需要改libprotobuf 的工程属性,c/c++,代码生成,MT改为MD)。
3. 拷贝头文件,库文件和exe
在mini-caffe根目录下,在cmd的脚本窗口输入copydeps.bat,运行批处理文件,拷贝头文件:
include\google 下的google目录复制到3rdparty\include\
3rdparty\src\protobuf 下搜索刚刚生成的libprotobuf.lib 和protoc.exe ,分别拷贝到 3rdparty\lib,3rdparty\bin目录下。
4. 编译 mini-caffe
根目录下有个 generatepb.bat,cmd中执行后在src\proto 下生成caffe.pb.cc, caffe.pb.h两个文件。
在根目录新建一个build文件夹,用于存放cmake生成的工程,(如果编译gpu版本,设置-DUSE_CUDA=ON ;-DUSE_CUDNN=ON)如下图所示:
以根目录下的cmakelists.txt 生成Vs2013工程,打开编译mini-caffe.sln即可。
如果caffe工程下没有caffe.pb.cc ,则加进去,否则会报链接错误。
5. 运行例子
编译好mini-caffe.sln后,生成了caffe.lib库。在mini-caffe解决方案中,新建deeplandmark工程,将example中landmark.cpp,main.cpp添加进去,如下图所示:
添加caffe的附加包含目录,并将生成的caffe.lib添加为附加依赖项即可。编译运行后,效果如下图所示: