如我们所知,CAFFE_ROOT下有一个文件夹叫tools,里面中有许多cpp文件,它们各自有其不同的功能。但是很显然,当我们要完成某样工作时,我们是不能直接用cpp文件的,只能用exe文件。如何利用这些cpp文件生成exe文件呢?这就是本次博客的主题。请记住,一大堆繁琐的配置不是目的,我们的目标是成功compile和build文件夹tools中的cpp文件,以生成所需要的exe文件。

关于如何配置,给出一个不错的参考文件:《windows+caffe+vs2013+cuda6.5配置记录》。

没错就是它。之所以说这个写得不错,是因为作者真心写得非常详细,基本上一路照他说的做就可以了。

1 与参考文件的不同之处

1、一些名称上的变化

参考文件给出的一些文件名称、环境变量名等可能与你计算机中的不一样,拿我自己的为例:

(1)CUDA_PATH_V6_5

我这里安装的是cuda7.0,所以这里面凡是写CUDA_PATH_V6_5的应该统统改成CUDA_PATH_V7_0。

(2)BOOST_1_56

caffe压缩包解压后,打开VS的“项目→属性→VC++目录→包含目录”,可以发现给出的是“BOOST_1_56_0”,因此在设置环境变量时,应该保持一致,写成“BOOST_1_56_0”。

2、一些与参考文件不同之处

(1)原文3.4.3里“编译./src/util中的文件”把cu文件也添加进去了,其实不必添加cu文件,把cpp装载进去就好。

(2)原文中“在db.cpp中作如下修改...CHECK_EQ”这一步都去掉,不知道是不是会有什么不好的影响。

 

2 怎么生成exe文件?

(1)对caffe压缩包解压后,由于“项目→属性”中给出的是相对路径,所以基本上不需要做什么变更,保持原样就好。解压后得到的文件夹里是这样的:

CAFFE学习笔记(三)在VS2013下生成需要的exe文件 

双击Caffe.sln,即可进入VS2013界面。

(2)进入后记得把正上方Debug旁边的win32改成x64,否则里面的每一个源文件都无法编译:

CAFFE学习笔记(三)在VS2013下生成需要的exe文件 

如果各源文件上方的#include文件打波浪线了,则说明包含文件路径没有设置好;或者包含路径设置好了,却没有把上图的win32改成x64。

(3)现在VS2013的左边栏中的内容如图所示。配置了半天,我们要做什么用,怎么用呢?其关键就在于文件夹“tools”!

CAFFE学习笔记(三)在VS2013下生成需要的exe文件 

在tools中一次只能放一个源文件,该源文件拥有着“main”函数,也就是整个程序的入口。在不同的场合,我们具有不同的需求,也就是说一次性tools文件夹内只允许有一个源文件。比如当我们想跑mnist时,该文件夹内就载入caffe.cpp;如果想要将自己的图像数据转成leveldb格式,则该文件夹内就载入convert_imageset.cpp。在CAFFE_ROOTtools中提供了多个这样的源文件,可按需取用。

 CAFFE学习笔记(三)在VS2013下生成需要的exe文件

当build完毕后,在CAFFE_ROOTx64Debug中将会出现一个Caffe.exe文件,这就是可执行文件。在很多脚本文件里需要设置可执行文件的路径,指的就是这个可执行文件。

CAFFE学习笔记(三)在VS2013下生成需要的exe文件 

(4)当生成caffe.cpp的可执行文件后,如果再往tools文件夹中载入第二个cpp文件(如convert_imageset.cpp)并build,则当前Caffe.exe的内容(即caffe.cpp的内容)将会被抹除掉。一个好的方法就是先给Caffe.exe重命名一下(比如改名成total.exe)然后再build新的cpp文件,这样就可以把两个可执行文件都保留下来了。

 

2016.5.12

by 悠望南山