2017-02-09 13 views
2

Я использую caffe library для моего проекта.Правильный способ ссылки на библиотеку 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) 
# 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. 

Как я могу решить эту проблему?

Есть ли лучший способ связаться с библиотекой caffe и ее принадлежностями?

+1

Читать полностью сообщение, особенно в части в конце, что сказать: «Это предупреждение для разработчиков проектов Используйте -Wno-dev, чтобы подавить его. Короче говоря, это проблема для разработчиков Caffe, а не для вас. Ваш файл 'CMakeLists.txt' должен работать нормально. Либо жить с ним, замалчивать его «-Wno-dev» или сообщать об этом разработчикам Caffe и надеяться, что они это исправят. –

+0

@Someprogrammerdude, Нет, он не работает. Всякий раз, когда я настраиваю, он всегда переходит к этому сообщению. Как я могу использовать -Wno-dev, чтобы подавить это предупреждение? – batuman

+0

Не могли бы вы рассказать о том, что часть «не работает»? * Как это не работает? Получаете ли вы больше ошибок или предупреждений при запуске 'cmake'? Вы получаете ошибки сборки? И как вы загрузили и * создали * Caffe? Какая версия? Имя 'caffe-master' на пути, по-видимому, указывает на то, что вы работаете над проверкой Git ведущей ветки, вместо того, чтобы полагаться на фактическую выпущенную версию. Вы пытались установить выпуск вместо этого? –

ответ

0

Для тех, у кого есть трудности с ссылкой на библиотеку caffe из вашего проекта C++ с помощью cmake, можно использовать CMakeLists.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) 

Если у вас есть ошибка, как следовать, это означает, что вы не строили Caffe с WITH_PYTHON_LAYER := 1 in Makefile.config

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)