弄了大半天!太恶心了!!!看了无数文档终于弄好了!!一定要写个博客记录一下!!!!
先去github下了caffe-master,不是caffe-windows这个,然后发现不会弄,跟网上教程不一样,网上教程好多都是caffe-windows这个。于是又下了caffe-windows,以及camke。
结果,改caffe-windows中build_win.cmd的配置参数,然后运行,闪退!!什么鬼!!找了一圈没找到解决办法,于是放弃,又开始弄caffe-master这个包,千辛万苦终于成功。于是下面开始讲正儿八经的配置方法。
在windows这个文件夹下CommonSettings.props.example这个文件,复制一个,并把新复制出来的文件名改成CommonSettings.props,于是开始对这个新复制的文件进行操作,也就是改一些配置,基本都能看懂。
<CpuOnlyBuild>true</CpuOnlyBuild>
<UseCuDNN>false</UseCuDNN> 这两行表示只用cpu,不用gpu加速
<PythonSupport>true</PythonSupport> 这个大家都懂
<MatlabSupport>false</MatlabSupport> 如果要加matlab就改成true,我懒得加了,心累,少改少错
<PropertyGroup Condition="'$(PythonSupport)'=='true'">
<PythonDir>D:\study\anaconda\conda_setup\envs\py27\</PythonDir>
<LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>
<IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>
</PropertyGroup>
注意!这里的PythonDir改成自己的python路径,我之前是用电脑里装的python3.5,但是,好像会报错,就用anaconda弄了一个python2.7的环境。而且!这个新装的环境一定要装numpy,不然又会报错。所以这里的路径就是写anaconda下面的python27的路径。
anaconda配python2.7如下
打开Anaconda Prompt,
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda config --remove channels defaults
#从清华镜像加载,不然总是从官网下载超时。
然后添加python2.7;
conda create -n py27 python=2.7
然后按提示输入y确认就可以,装好以后
conda activate py27
conda install -n py27 numpy
如果要加matlab,下面几行就是,同样也是改一下matlabdir改成自己matlab根目录就可以了。至于还有没有什么坑我也不知道。
这个配置文件其他的就不用管了。开心。
接下来,用vs2013打开caffe.sln这个项目。
libcaffe右键,属性,配置属性,上面的配置选debug或者release都可以,平台选x64;c/c++,将警告视为错误,选否,确定。libcaffe项目右键生成。就会刷刷刷的编译。没遇到报错。
然后选中整个解决方法,右键,属性,启动项目,选择第一个 当前选定内容,确定。然后右键生成项目,刷刷刷的编译。warnings不用管。如果最后16个项目全部生成成功,就大功告成啦!
但是!!我遇到了报错:错误 397 error LNK1104: 无法打开文件“python27_d.lib”...
百思不得其解之后参考网上大神的博客,在anaconda/envs/py27/include中改两个配置文件 pyconfig.h, object.h。
1.改pyconfig.h中两处地方:
#ifdef _DEBUG
# define Py_DEBUG
#endif
改为(其实就是注释掉一行)
#ifdef _DEBUG
//# define Py_DEBUG
#endif
还有,
# ifdef _DEBUG
# pragma comment(lib,"python27_d.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
改为(其实就是去掉第一个python27_d的_d)
# ifdef _DEBUG
# pragma comment(lib,"python27.lib")
# else
# pragma comment(lib,"python27.lib")
# endif /* _DEBUG */
2.改object.h中一处地方
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
#define Py_TRACE_REFS
#endif
改为(其实也是注释一行)
#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
// #define Py_TRACE_REFS
#endif
然后我没遇到问题了!!!开心!!!!!!可以回宿舍睡个安稳觉啦!!!!!