C++ 链接到Caffe库的正确方法

C++ 链接到Caffe库的正确方法,c++,cmake,caffe,C++,Cmake,Caffe,我正在为我的项目使用 我的CMakeLists.txt文件如下 cmake_minimum_required(VERSION 2.6) PROJECT(endtoendlib) set(Caffe_DIR "/home/Softwares/Libraries/caffe-master/build/cmake") include_directories( ${PROJECT_BINARY_DIR}) # Find Caffe FIND_PACKAGE(Caffe REQUIRED) # addi

我正在为我的项目使用

我的
CMakeLists.txt
文件如下

cmake_minimum_required(VERSION 2.6)
PROJECT(endtoendlib)
set(Caffe_DIR "/home/Softwares/Libraries/caffe-master/build/cmake")
include_directories( ${PROJECT_BINARY_DIR})

# Find Caffe
FIND_PACKAGE(Caffe REQUIRED)
# adding sources to target
add_executable(endtoendlib endtoendLstm.cpp)
target_link_libraries(endtoendlib ${Caffe_LIBS})
当我运行
cmake..
时,出现如下错误:

CMake Warning (dev) at
 /home/Softwares/Libraries/caffe-master/build/cmake/CaffeConfig.cmake:22
 (if):
   given arguments:

     "ON"

   An argument named "ON" appears in a conditional statement.  Policy CMP0012
   is not set: if() recognizes numbers and boolean constants.  Run "cmake
   --help-policy CMP0012" for policy details.  Use the cmake_policy command to
   set the policy and suppress this warning.
 Call Stack (most recent call first):
   CMakeLists.txt:9 (FIND_PACKAGE)
 This warning is for project developers.  Use -Wno-dev to suppress it.
我怎样才能解决这个问题


<> P>是否有更好的方法链接到CAFE库及其附件?

< P>对于那些使用CMAGE从C++项目链接到CAFE库的人来说,下面是CMAKISST.TXT,我可以成功地使用它。请根据您的设置更改到正确的路径

cmake_minimum_required(VERSION 2.6)
cmake_policy(SET CMP0012 OLD)

PROJECT(endtoendlib)


if(ON)
  if(NOT OpenCV_FOUND)
    set(Caffe_OpenCV_CONFIG_PATH "/usr/local/share/OpenCV")
    if(Caffe_OpenCV_CONFIG_PATH)
      get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE)

      if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core)
        message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}")
        include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake)
      endif()

    else()
      find_package(OpenCV REQUIRED)
    endif()
    unset(Caffe_OpenCV_CONFIG_PATH)
  endif()
endif()

# Compute paths
get_filename_component(Caffe_CMAKE_DIR "/home/Softwares/Libraries/caffe-master/build/cmake" PATH)
set(Caffe_INCLUDE_DIRS "/home/Softwares/Libraries/caffe-master/include")
list(APPEND Caffe_INCLUDE_DIRS "/usr/include")
list(APPEND Caffe_INCLUDE_DIRS "/usr/local/cuda-8.0/include")
list(APPEND Caffe_INCLUDE_DIRS "/usr/local/include/opencv")
list(APPEND Caffe_INCLUDE_DIRS "/usr/include/atlas")
list(APPEND Caffe_INCLUDE_DIRS "/home/Softwares/Libraries/caffe-master/build/src/")

# Our library dependencies
#if(NOT TARGET caffe AND NOT caffe_BINARY_DIR)
include("/home/Softwares/Libraries/caffe-master/build/ccmake/CaffeTargets.cmake")
#endif()

# List of IMPORTED libs created by CaffeTargets.cmake
set(Caffe_LIBRARIES "/home/Softwares/Libraries/caffe-master/build/lib/libcaffe.so")

# Definitions
set(Caffe_DEFINITIONS "-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB")

# Cuda support variables
set(Caffe_CPU_ONLY OFF)
set(Caffe_HAVE_CUDA TRUE)
set(Caffe_HAVE_CUDNN FALSE)


include_directories( ${PROJECT_BINARY_DIR} ${Caffe_INCLUDE_DIRS})

# adding sources to target
add_executable(endtoendlib endtoendLstm.cpp)
target_link_libraries(endtoendlib ${OpenCV_LIBS} ${Caffe_LIBRARIES} -lglog -lprotobuf -lboost_system)
如果您有如下错误,这意味着您没有使用Makefile.config中的
和\u PYTHON\u LAYER:=1构建caffe

Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ImageData (known types: AbsVal, Accuracy, ArgMax, BNLL, BatchNorm, BatchReindex, Bias, Concat, ContrastiveLoss, Convolution, Crop, Data, Deconvolution, Dropout, DummyData, ELU, Eltwise, Embed, EuclideanLoss, Exp, Filter, Flatten, HDF5Data, HDF5Output, HingeLoss, Im2col, InfogainLoss, InnerProduct, Input, LRN, LSTM, LSTMUnit, Log, MVN, MemoryData, MultinomialLogisticLoss, PReLU, Parameter, Pooling, Power, RNN, ReLU, Reduction, Reshape, SPP, Scale, Sigmoid, SigmoidCrossEntropyLoss, Silence, Slice, Softmax, SoftmaxWithLoss, Split, TanH, Threshold, Tile)

阅读整个消息,特别是结尾的部分说“此警告是针对项目开发人员的。请使用-Wno-dev来抑制它。”简而言之,这是Caffe开发人员的问题,而不是您的问题。您的
CMakeLists.txt
文件应该可以正常工作。要么接受它,要么用
-Wno dev
让它安静下来,要么向Caffe开发人员报告,希望他们能修复它。@Someprogrammerdude,不,它不起作用。每当我进行配置时,它总是转到此消息。我如何使用-Wno-dev来消除这个警告?您能详细说明一下“它不工作”部分吗?它怎么不起作用?运行
cmake
时是否会收到更多错误或警告?你有生成错误吗?您是如何下载和构建Caffe的?什么版本?路径中的名称
caffe master
似乎表明您正在处理master分支的Git签出,而不是依赖于实际发布的版本。你试过安装一个版本吗?@Someprogrammerdude我在我的cmake文件中放了一行cmake_策略(设置CMP0012 OLD),没有更多这样的警告。如果您的软件中有一个bug,那么某些变量似乎使用了错误的方式。更新至最新版本,可能来自Git。如果没有帮助,作为开发者。