[英]How to use Caffe library in C++ project with CMakeLists.txt
我試圖在我用 CMakeLists.txt 編譯的 C++ 項目中使用 Caffe,但它不想工作。 我在代碼中唯一的一行是
#include <caffe/caffe.hpp>
我自己編譯了 Caffe,它安裝在目錄“/home/tamas/caffe”中。 到目前為止,我的 CMakeLists.txt 看起來像這樣:
cmake_minimum_required (VERSION 3.5)
include(FindPkgConfig)
project (main)
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED TRUE)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -pthread")
set (source_dir "${PROJECT_SOURCE_DIR}/src/")
set (OpenCV_DIR "/home/tamas/opencv/include/opencv2")
set (Caffe_DIR "/home/tamas/caffe")
file (GLOB source_files "${source_dir}/ssd_video.cpp")
find_package(OpenCV 4.4.0 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
find_package(Caffe REQUIRED)
include_directories(${Caffe_INCLUDE_DIRS})
add_executable (main ${source_files})
target_link_libraries(main ${OpenCV_LIBS})
target_link_libraries(main ${Caffe_LIBRARIES})
錯誤如下:
CMake Error at CMakeLists.txt:24 (find_package):
By not providing "FindCaffe.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Caffe", but
CMake did not find one.
Could not find a package configuration file provided by "Caffe" with any of
the following names:
CaffeConfig.cmake
caffe-config.cmake
Add the installation prefix of "Caffe" to CMAKE_PREFIX_PATH or set
"Caffe_DIR" to a directory containing one of the above files. If "Caffe"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
問題是我已經搜索過了,但我的電腦上沒有 FindCaffe.cmake 文件。 我找到了 CaffeConfig.cmake 的示例,但我試過了,它也不起作用。
有沒有辦法可以將 Caffe 與我的 C++ 項目聯系起來? 謝謝!
<library>_DIR
通常不應在 CMake 代碼中手動設置。 應該使用更好的替代方案,因為設置這些變量不一定會滿足您的要求。 它不會改變find_package
在哪里找到它的庫。
CaffeConfig.cmake
文件是在構建Caffe時生成的。 您永遠不應該下載另一個文件,這些文件僅與特定的構建配置兼容。
Caffe 庫支持與 CMake 一起使用,因此不需要FindCaffe.cmake
。
要使find_package
工作,請設置<package>_ROOT
變量(至少需要 CMake 3.12)或者您必須 append 安裝路徑在CMAKE_PREFIX_PATH
中。 這是一個使用前綴路徑的 CMake 示例:
# If you only built the library
list (APPEND CMAKE_PREFIX_PATH "/home/tamas/caffe/build-dir")
# If you installed the library there
list (APPEND CMAKE_PREFIX_PATH "/home/tamas/caffe/")
find_package(Caffe REQUIRED)
請注意,不會設置Caffe_LIBRARIES
和Caffe_INCLUDE_DIRS
。 這是舊的 CMake 樣式,Caffe 庫使用新樣式。 這是你應該做的:
target_link_libraries(main PUBLIC caffe caffeproto)
此行添加包含目錄並添加到庫的鏈接。
要解決此問題,您可以執行以下操作:
cmake
目錄並將下載的文件放在那里。set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
set (Caffe_DIR "/home/tamas/caffe")
更改為set (CAFFE_ROOT_DIR "/home/tamas/caffe")
find_package(Caffe REQUIRED)
更改為find_package(CAFFE REQUIRED)
CAFFE_INCLUDE_DIRS
和CAFFE_LIBRARIES
包含目錄和鏈接庫cmake
命令
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.