首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CMake中使用第三方共享对象库和头文件

在CMake中使用第三方共享对象库和头文件
EN

Stack Overflow用户
提问于 2022-01-10 19:20:28
回答 2查看 293关注 0票数 0

我正在尝试使用这个库来使用ZED相机作为我在RaspberryPi上的项目。我成功地安装了库,共享对象文件位于/usr/local/lib/libzed_open_capture.so,包含头位于/usr/local/include/zed-open-capture/位置。为了包含这个库,我将在我的CMakeLists.txt中添加以下行

代码语言:javascript
复制
find_library(ZED_LIB zed_open_capture) 

include_directories("/usr/local/include/zed-open-capture/")

add_executable(zed_pub src/zed_pub.cpp)

target_link_libraries(zed_pub ${ZED_LIB})

现在,当我使用这段代码时,它会显示这个错误"‘sl_oc::video’ has not been declared

代码语言:javascript
复制
#include "videocapture.hpp" //Library Header File
sl_oc::video::VideoCapture cap;
cap.initializeVideo();
const sl_oc::video::Frame frame = cap.getLastFrame();

  • 请解释一下如何在CMake中使用共享对象库文件和头文件?这个库已经在我的Linux系统上使用CMake build和sudo make install安装了。

图书馆的github回购是在https://github.com/stereolabs/zed-open-capture

另外,我找不到Find_PKG_name.cmake,所以我不能使用find_package()选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-11 14:52:11

videocapture.hpp#ifdef VIDEO_MOD_AVAILABLE中封装了所需的定义。这似乎是没有定义的。ZED包中的根CMakeLists.txt默认为ON,因此这很可能是为包构建定义的。但是,正如其他人所指出的,包在安装的任何地方都不会保存此信息。包所要做的“正确”方法是在安装时配置/修改包含文件,以说明构建配置,可能是通过生成具有适当定义的"config.hpp“文件。或者在安装中包含一个zed-config.cmake文件,并包含所有必要的导入和定义。

你的短路解决方案应该没问题。只需添加target_compile_definitions(zed_pub PUBLIC VIDEO_MOD_AVAILABLE)即可。如果您希望将来做得更清楚,请为zed_lib创建一个导入的目标,并在该目标上同时设置include_directoriescompile_definitions,这样库的所有用户都可以自动定义这个目标。

票数 1
EN

Stack Overflow用户

发布于 2022-01-11 07:44:43

根据ZED的CMakeLists.txt

代码语言:javascript
复制
...
# Install rules
set_target_properties(${PROJECT_NAME} PROPERTIES
    PUBLIC_HEADER "${HDR_FULL}"
)
install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/zed-open-capture)

参考文献:https://github.com/stereolabs/zed-open-capture/blob/dfa0aee51ccd2297782230a05ca59e697df496b2/CMakeLists.txt#L142-L148

ZED似乎而不是提供任何"CMake配置“文件.

因此,您必须创建自己的FindZED.cmake模块和/或改进该项目的CMakeLists.txt .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70657844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档