1. Problem

I want to build caffe on windows. Windows official version is a little complex,since I need to change dependent libs frequently. For a cross-platform solution,Qt is an awesome choice.

2. Solution

Platform: Windows10(x64)+ VS2013 (msvc120)

2.1 Prepare

Caffe uses a lot of cpp libs: boost,gflags,glog,hdf5,LevelDB,Imdb,openblas,opencv,protobuf. I upload msvc120_x64 version here.

2.2 Code

Qt uses qmake to manage project. All you need just a *.pro file,as CMakeLists.txt for cmake.

Here is libcaffe.pro

TEMPLATE = lib
CONfig(debug,debug|release): TARGET = libcaffed
CONfig(release,debug|release): TARGET = libcaffe
INCLUDEPATH += include src include/caffe/proto
DEFInes += USE_OPENCV cpu_ONLY
CONfig += dll staticlib

# Input
HEADERS += \     include/caffe/blob.hpp\     include/caffe/caffe.hpp\     include/caffe/common.hpp\     include/caffe/data_reader.hpp\     include/caffe/data_transformer.hpp\     include/caffe/filler.hpp\     include/caffe/internal_thread.hpp\     include/caffe/layer.hpp\     include/caffe/layers/absval_layer.hpp\     include/caffe/layers/accuracy_layer.hpp\     include/caffe/layers/argmax_layer.hpp\     include/caffe/layers/base_conv_layer.hpp\     include/caffe/layers/base_data_layer.hpp\     include/caffe/layers/batch_norm_layer.hpp\     include/caffe/layers/batch_reindex_layer.hpp\     include/caffe/layers/bias_layer.hpp\     include/caffe/layers/bnll_layer.hpp\     include/caffe/layers/Box_annotator_ohem_layer.hpp\     include/caffe/layers/concat_layer.hpp\     include/caffe/layers/contrastive_loss_layer.hpp\     include/caffe/layers/conv_layer.hpp\     include/caffe/layers/crop_layer.hpp\     include/caffe/layers/cudnn_conv_layer.hpp\     include/caffe/layers/cudnn_lcn_layer.hpp\     include/caffe/layers/cudnn_lrn_layer.hpp\     include/caffe/layers/cudnn_pooling_layer.hpp\     include/caffe/layers/cudnn_relu_layer.hpp\     include/caffe/layers/cudnn_sigmoid_layer.hpp\     include/caffe/layers/cudnn_softmax_layer.hpp\     include/caffe/layers/cudnn_tanh_layer.hpp\     include/caffe/layers/data_layer.hpp\     include/caffe/layers/deconv_layer.hpp\     include/caffe/layers/dropout_layer.hpp\     include/caffe/layers/dummy_data_layer.hpp\     include/caffe/layers/eltwise_layer.hpp\     include/caffe/layers/elu_layer.hpp\     include/caffe/layers/embed_layer.hpp\     include/caffe/layers/euclidean_loss_layer.hpp\     include/caffe/layers/exp_layer.hpp\     include/caffe/layers/filter_layer.hpp\     include/caffe/layers/flatten_layer.hpp\     include/caffe/layers/hdf5_data_layer/.hpp\     include/caffe/layers/hdf5_output_layer.hpp\     include/caffe/layers/hinge_loss_layer.hpp\     include/caffe/layers/im2col_layer.hpp\     include/caffe/layers/image_data_layer.hpp\     include/caffe/layers/infogain_loss_layer.hpp\     include/caffe/layers/inner_product_layer.hpp\     include/caffe/layers/input_layer.hpp\     include/caffe/layers/log_layer.hpp\     include/caffe/layers/loss_layer.hpp\     include/caffe/layers/lrn_layer.hpp\     include/caffe/layers/lstm_layer.hpp\     include/caffe/layers/memory_data_layer.hpp\     include/caffe/layers/multinomial_logistic_loss_layer.hpp\     include/caffe/layers/mvn_layer.hpp\     include/caffe/layers/neuron_layer.hpp\     include/caffe/layers/parameter_layer.hpp\     include/caffe/layers/pooling_layer.hpp\     include/caffe/layers/power_layer.hpp\     include/caffe/layers/prelu_layer.hpp\     include/caffe/layers/psroi_pooling_layer.hpp\     include/caffe/layers/python_layer.hpp\     include/caffe/layers/recurrent_layer.hpp\     include/caffe/layers/reduction_layer.hpp\     include/caffe/layers/relu_layer.hpp\     include/caffe/layers/reshape_layer.hpp\     include/caffe/layers/rnn_layer.hpp\     include/caffe/layers/roi_pooling_layer.hpp\     include/caffe/layers/scale_layer.hpp\     include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp\     include/caffe/layers/sigmoid_layer.hpp\     include/caffe/layers/silence_layer.hpp\     include/caffe/layers/slice_layer.hpp\     include/caffe/layers/smooth_l1_loss_layer.hpp\     include/caffe/layers/smooth_l1_loss_ohem_layer.hpp\     include/caffe/layers/softmax_layer.hpp\     include/caffe/layers/softmax_loss_layer.hpp\     include/caffe/layers/softmax_loss_ohem_layer.hpp\     include/caffe/layers/split_layer.hpp\     include/caffe/layers/spp_layer.hpp\     include/caffe/layers/tanh_layer.hpp\     include/caffe/layers/threshold_layer.hpp\     include/caffe/layers/tile_layer.hpp\     include/caffe/layers/window_data_layer.hpp\     include/caffe/layer_factory.hpp\     include/caffe/net.hpp\     include/caffe/parallel.hpp\     include/caffe/proto/caffe.pb.h\     include/caffe/sgd_solvers.hpp\     include/caffe/solver.hpp\     include/caffe/solver_factory.hpp\     include/caffe/syncedmem.hpp\     include/caffe/util/benchmark.hpp\     include/caffe/util/blocking_queue.hpp\     include/caffe/util/cudnn.hpp\     include/caffe/util/db.hpp\     include/caffe/util/db_leveldb.hpp\     include/caffe/util/db_lmdb.hpp\     include/caffe/util/device_alternate.hpp\     include/caffe/util/format.hpp\     include/caffe/util/hdf5.hpp\     include/caffe/util/im2col.hpp\     include/caffe/util/insert_splits.hpp\     include/caffe/util/io.hpp\     include/caffe/util/math_functions.hpp\     include/caffe/util/mkl_alternate.hpp\     include/caffe/util/rng.hpp\     include/caffe/util/signal_handler.h\     include/caffe/util/upgrade_proto.hpp

SOURCES += \    src/caffe/blob.cpp \    src/caffe/common.cpp \    src/caffe/data_reader.cpp \    src/caffe/data_transformer.cpp \    src/caffe/internal_thread.cpp \    src/caffe/layer.cpp \    src/caffe/layers/absval_layer.cpp \    src/caffe/layers/accuracy_layer.cpp \    src/caffe/layers/argmax_layer.cpp \    src/caffe/layers/base_conv_layer.cpp \    src/caffe/layers/base_data_layer.cpp \    src/caffe/layers/batch_norm_layer.cpp \    src/caffe/layers/batch_reindex_layer.cpp \    src/caffe/layers/bias_layer.cpp \    src/caffe/layers/bnll_layer.cpp \    src/caffe/layers/Box_annotator_ohem_layer.cpp \    src/caffe/layers/concat_layer.cpp \    src/caffe/layers/contrastive_loss_layer.cpp \    src/caffe/layers/conv_layer.cpp \    src/caffe/layers/crop_layer.cpp \    src/caffe/layers/cudnn_conv_layer.cpp \    src/caffe/layers/cudnn_lcn_layer.cpp \    src/caffe/layers/cudnn_lrn_layer.cpp \    src/caffe/layers/cudnn_pooling_layer.cpp \    src/caffe/layers/cudnn_relu_layer.cpp \    src/caffe/layers/cudnn_sigmoid_layer.cpp \    src/caffe/layers/cudnn_softmax_layer.cpp \    src/caffe/layers/cudnn_tanh_layer.cpp \    src/caffe/layers/data_layer.cpp \    src/caffe/layers/deconv_layer.cpp \    src/caffe/layers/dropout_layer.cpp \    src/caffe/layers/dummy_data_layer.cpp \    src/caffe/layers/eltwise_layer.cpp \    src/caffe/layers/elu_layer.cpp \    src/caffe/layers/embed_layer.cpp \    src/caffe/layers/euclidean_loss_layer.cpp \    src/caffe/layers/exp_layer.cpp \    src/caffe/layers/filter_layer.cpp \    src/caffe/layers/flatten_layer.cpp \    src/caffe/layers/hdf5_data_layer.cpp \    src/caffe/layers/hdf5_output_layer.cpp \    src/caffe/layers/hinge_loss_layer.cpp \    src/caffe/layers/im2col_layer.cpp \    src/caffe/layers/image_data_layer.cpp \    src/caffe/layers/infogain_loss_layer.cpp \    src/caffe/layers/inner_product_layer.cpp \    src/caffe/layers/input_layer.cpp \    src/caffe/layers/log_layer.cpp \    src/caffe/layers/loss_layer.cpp \    src/caffe/layers/lrn_layer.cpp \    src/caffe/layers/lstm_layer.cpp \    src/caffe/layers/lstm_unit_layer.cpp \    src/caffe/layers/memory_data_layer.cpp \    src/caffe/layers/multinomial_logistic_loss_layer.cpp \    src/caffe/layers/mvn_layer.cpp \    src/caffe/layers/neuron_layer.cpp \    src/caffe/layers/parameter_layer.cpp \    src/caffe/layers/pooling_layer.cpp \    src/caffe/layers/power_layer.cpp \    src/caffe/layers/prelu_layer.cpp \    src/caffe/layers/psroi_pooling_layer.cpp \    src/caffe/layers/recurrent_layer.cpp \    src/caffe/layers/reduction_layer.cpp \    src/caffe/layers/relu_layer.cpp \    src/caffe/layers/reshape_layer.cpp \    src/caffe/layers/rnn_layer.cpp \    src/caffe/layers/roi_pooling_layer.cpp \    src/caffe/layers/scale_layer.cpp \    src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp \    src/caffe/layers/sigmoid_layer.cpp \    src/caffe/layers/silence_layer.cpp \    src/caffe/layers/slice_layer.cpp \    src/caffe/layers/smooth_l1_loss_layer.cpp \    src/caffe/layers/smooth_L1_loss_ohem_layer.cpp \    src/caffe/layers/softmax_layer.cpp \    src/caffe/layers/softmax_loss_layer.cpp \    src/caffe/layers/softmax_loss_ohem_layer.cpp \    src/caffe/layers/split_layer.cpp \    src/caffe/layers/spp_layer.cpp \    src/caffe/layers/tanh_layer.cpp \    src/caffe/layers/threshold_layer.cpp \    src/caffe/layers/tile_layer.cpp \    src/caffe/layers/window_data_layer.cpp \    src/caffe/layer_factory.cpp \    src/caffe/net.cpp \    src/caffe/parallel.cpp \    src/caffe/solver.cpp \    src/caffe/solvers/adadelta_solver.cpp \    src/caffe/solvers/adagrad_solver.cpp \    src/caffe/solvers/adam_solver.cpp \    src/caffe/solvers/nesterov_solver.cpp \    src/caffe/solvers/rmsprop_solver.cpp \    src/caffe/solvers/sgd_solver.cpp \    src/caffe/syncedmem.cpp \    src/caffe/util/benchmark.cpp \    src/caffe/util/blocking_queue.cpp \    src/caffe/util/cudnn.cpp \    src/caffe/util/db.cpp \    src/caffe/util/db_leveldb.cpp \    src/caffe/util/db_lmdb.cpp \    src/caffe/util/hdf5.cpp \    src/caffe/util/im2col.cpp \    src/caffe/util/insert_splits.cpp \    src/caffe/util/io.cpp \    src/caffe/util/math_functions.cpp \    src/caffe/util/signal_handler.cpp \    src/caffe/util/upgrade_proto.cpp \    src/caffe/proto/caffe.pb.cc

win32{

# opencv
PATH_OPENCV_INCLUDE   = "H:\3rdparty\OpenCV\opencv310\build\include"
PATH_OPENCV_LIBRARIES = "H:\3rdparty\OpenCV\opencv310\build\x64\vc12\lib"
VERSION_OPENCV        = 310
INCLUDEPATH += $${PATH_OPENCV_INCLUDE} CONfig(debug,debug|release){ LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_core$${VERSION_OPENCV}d LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_highgui$${VERSION_OPENCV}d LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_imgcodecs$${VERSION_OPENCV}d LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_imgproc$${VERSION_OPENCV}d } CONfig(release,debug|release){ LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_core$${VERSION_OPENCV} LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_highgui$${VERSION_OPENCV} LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_imgcodecs$${VERSION_OPENCV} LIBS += -L$${PATH_OPENCV_LIBRARIES} -lopencv_imgproc$${VERSION_OPENCV} } #glog INCLUDEPATH += H:\3rdparty\glog\include LIBS += -LH:\3rdparty\glog\lib\x64\v120\Debug\dynamic -llibglog #boost INCLUDEPATH += H:\3rdparty\boost\boost_1_59_0 CONfig(debug,debug|release): BOOST_VERSION = "-vc120-mt-gd-1_59" CONfig(release,debug|release): BOOST_VERSION = "-vc120-mt-1_59" LIBS += -LH:\3rdparty\boost\boost_1_59_0\lib64-msvc-12.0 \  -llibboost_system$${BOOST_VERSION} \     -llibboost_date_time$${BOOST_VERSION} \  -llibboost_filesystem$${BOOST_VERSION} \     -llibboost_thread$${BOOST_VERSION} \  -llibboost_regex$${BOOST_VERSION}

#gflags
INCLUDEPATH += H:\3rdparty\gflags\include
CONfig(debug,debug|release): LIBS += -LH:\3rdparty\gflags\x64\v120\dynamic\Lib -lgflagsd
CONfig(release,debug|release): LIBS += -LH:\3rdparty\gflags\x64\v120\dynamic\Lib -lgflags

#protobuf
INCLUDEPATH += H:\3rdparty\protobuf\include
CONfig(debug,debug|release): LIBS += -LH:\3rdparty\protobuf\lib\x64\v120\Debug -llibprotobuf
CONfig(release,debug|release): LIBS += -LH:\3rdparty\protobuf\lib\x64\v120\Release -llibprotobuf

# hdf5
INCLUDEPATH += H:\3rdparty\hdf5\include
LIBS += -LH:\3rdparty\hdf5\lib\x64 -lhdf5 -lhdf5_hl -lhdf5_tools -lhdf5_cpp

# levelDb
INCLUDEPATH += H:\3rdparty\LevelDB\include
CONfig(debug,debug|release): LIBS += -LH:\3rdparty\LevelDB\lib\x64\v120\Debug -lLevelDb
CONfig(release,debug|release): LIBS += -LH:\3rdparty\LevelDB\lib\x64\v120\Release -lLevelDb

# lmdb
INCLUDEPATH += H:\3rdparty\lmdb\include
CONfig(debug,debug|release): LIBS += -LH:\3rdparty\lmdb\lib\x64 -llmdbD
CONfig(release,debug|release): LIBS += -LH:\3rdparty\lmdb\lib\x64 -llmdb

#openblas
INCLUDEPATH += H:\3rdparty\openblas\include
LIBS += -LH:\3rdparty\openblas\lib\x64 -llibopenblas
}

You neeed to change library path to your own.

Done.

You can find caffe project on my github

Build caffe using qmake (ubuntu&windows)的更多相关文章

  1. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

  2. 在编译时编译Xcode中的C类错误:stl vector

    我有一个C类,用gcc和可视化工作室中的寡妇在linux上编译.boid.h:并在boid.cpp中:但是,当我在Xcode中编译此代码时,我收到以下错误:有任何想法吗?我以为你可以使用C/C++代码并在Xcode中编译没有问题?.m文件被视为具有Objective-C扩展名的.c文件..mm文件被视为具有Objective-C扩展名的.cpp文件,那么它被称为Objective-C只需将.m文件重命名为.mm,右键单击或按住Ctrl键并在Xcode中的文件中选择重命名.

  3. 如何从Haxe创建iOS-和OSX-库并在本机应用程序中使用它?

    我有一个在Haxe上编写自己的协议,数据结构和逻辑的跨平台实现.如何在iOS和OSX的企业应用程序中构建和使用它?

  4. Swift的Debug和Release宏

    stepa:在SwiftCompiler-CustomFlags的OtherSwiftFlags的Debug里添加-DDEBUG在Release里添加-DRELEASEstepb:在代码里这么使用#ifDEBUGprint#endif#ifRELEASEprint#endif

  5. Swift调用C语言自建函数库的方法

    本程序示范了如何用Swift调用自定义C语言模块的方法。简介示范程序中有一个C语言的源程序CSwift.C和一个头文件CSwift.h,我们的目标是构造一个CSwift的函数库,能够让swift源程序执行CSwift程序中的函数。快速上手本程序需要Swift3.0以上版本。下载、编译和测试源程序采用C语言写成,测试程序则是Swift语言编写。因此如果通过测试,则恭喜您,已经成功实现了Swift语言调用C语言的整个过程。这种做法主要是为了能够在同一个项目中用Swift去测试C语言的模块。

  6. 在Swift Xcode项目中使用LLVM C API

    我试图在用Swift编写的Xcode项目中使用LLVMCAPI.为此,我松散地遵循指南here,但遇到了麻烦.在编译步骤中,在Xcode中添加包含路径到构建设置后,我收到以下错误:幻灯片的下一步是添加标志:但我不确定在构建设置中将它们放在哪里–将它们添加到’其他C标志’或’其他Swift标志’选项似乎没有做任何事情.我该怎么做呢?

  7. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  8. android – UnsatisfiedLInkError使用NDK链接到FFMPEG

    我使用bambuser的文件编译了FFMPEGforandroid.编译运行正常.没有错误.我还确保在build.sh中更改包名称.但是,一旦我尝试链接到文件,手机就会抛出UnsatisfiedLinkError.这是Androkd.mk文件:Video.c很简单:相应的Java代码也很简单:但我得到这个错误:我尝试用Java手动加载预构建的共享库(bambuser文件)(使用System.loa

  9. 如何在android.mk文件中指定c头文件

    我有一个ac源文件夹名称“clib”,在那里,我有一些示例文件,如1.h,1.c,2.h,2.c,3.c,3.h和外面那个文件夹我有4.h,4.c,4_jni.h,4_jni.c现在构建“.so”我创建了我的android.mk这样的东西这里4.h包含1.h文件所以我真正的问题是,当我试图构建.so文件时,它给了我一个像这样的错误致命错误:1.h:没有这样的文件或目录如果我从4.h中移除1.h,一切都很好,但我有一个大的c库具有相同类型的文件夹结构,并且一些.h文件包含很少的marcos定义…

  10. android – layout“include”功能不支持layout_gravity属性?

    似乎layout_margin也不支持.这是view1.xml布局解决方法两年后,这个bug仍然存在!尽管标签应该支持所有android:layout_*属性,但android:layout_gravity属性不是.我目前使用的工作是以编程方式设置布局边距,如下所示:或者作为父级的FrameLayout,例如:编辑:我还发现android:layout_gravity属性适用于include标签,因为它有layout_width和layout_height标签!

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部