我有一个由CMake制作的动态库,该库使用opencv,更具体地说是dnn模块。 这是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
#################configure_file(facedetect.pc.in facedetect.pc @ONLY)
project(facedetect LANGUAGES C CXX VERSION 0.0.1)
set(CMAKE_VERBOSE_MAKEFILE FALSE)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_C_FLAGS_DEBUG "-g -ggdb -pg -fsanitize=undefined")
set(CMAKE_C_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
endif ()
set(CMAKE_BUILD_TYPE RELEASE)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/")
find_package(OpenCV REQUIRED PATHS "${CMAKE_CURRENT_SOURCE_DIR}/opencv/")
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_library(facedetect SHARED "${CMAKE_CURRENT_SOURCE_DIR}/src/facedetect.cpp")
set_target_properties(facedetect PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/src/facedetect.h")
target_include_directories(facedetect PRIVATE include)
target_include_directories(facedetect PRIVATE src)
target_link_libraries( facedetect ${OpenCV_LIBS} )
install(TARGETS facedetect
LIBRARY DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/lib/"
PUBLIC_HEADER DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/include/")
install(TARGETS
facedetect
EXPORT facedetect.pc.in
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
export(TARGETS
facedetect
NAMESPACE facedetect::
FILE "${CMAKE_CURRENT_BINARY_DIR}/facedetectConfig.cmake"
)
install(EXPORT
facedetect.pc.in
DESTINATION "${CMAKE_INSTALL_DATADIR}/facedetect/cmake"
NAMESPACE facedetect::
)
./src/facedetect.cpp
(用于构建库)使用两个文件:
const std::string caffeConfigFile = "./src/deploy.prototxt.txt";
const std::string caffeWeightFile = "./src/res10_300x300_ssd_iter_140000.caffemodel";
当我建立我的图书馆时,除了那两个文件之外,一切都很好: 我有一个使用我的库的项目,当我尝试启动main.cpp时,它向我显示了这一点:
OpenCV(4.4.0-pre) /home/remmidemmi/FaceDetectorTT/opencv/modules/dnn/src/caffe/caffe_io.cpp:1121: error: (-2:Unspecified error) FAILED: fs.is_open(). Can't open "./deploy.prototxt.txt" in function 'ReadProtoFromTextFile'
我的项目的cmakefile:
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(app LANGUAGES C CXX VERSION 0.0.1)
set(CMAKE_VERBOSE_MAKEFILE FALSE)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_C_FLAGS_DEBUG "-g -ggdb -pg -fsanitize=undefined")
set(CMAKE_C_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
endif ()
set(BOOST_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/boost_1_72_0/")
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(facedetect REQUIRED PATHS "${CMAKE_CURRENT_SOURCE_DIR}/facedetect/"
REQUIRED COMPONENTS facedetect)
find_package(Boost REQUIRED COMPONENTS filesystem)
include_directories( ${BOOST_INCLUDE_DIRS} )
add_executable(app main.cpp)
target_link_libraries(app facedetect::facedetect)
target_link_libraries( app Boost::filesystem )
install(TARGETS app DESTINATION bin)
所以我的问题是如何将这两个文件添加到.so所在的位置,或者我应该整体上怎么做,所以我一直陷在这个问题上,却找不到答案