首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake不为g2o设置变量

CMake不为g2o设置变量
EN

Stack Overflow用户
提问于 2021-08-02 11:33:10
回答 1查看 470关注 0票数 0

在macOS 11.0上,我下载并构建了g2o (https://github.com/RainerKuemmerle/g2o),并使用cmake --install .安装了它,然后尝试通过CMake (CMakeLists.txt)将其包含到自己的项目中:

代码语言:javascript
运行
复制
cmake_minimum_required (VERSION 3.14)
project (MY-PROJECT)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# PkgConfig to find other packages easily
find_package(PkgConfig REQUIRED) 

# find required modules
pkg_check_modules(OpenCV REQUIRED opencv4)
find_package(Eigen3 REQUIRED)
find_package(OpenGL REQUIRED)
find_package(G2O REQUIRED)

message(STATUS "G2O FOUND: ")
message(STATUS ${G2O_FOUND}) # prints 1

message(STATUS "G2O INCLUDE DIRS: ")
message(STATUS ${G2O_INCLUDE_DIRS}) # prints nothing

message(STATUS "G2O Link Libraries: ")
message(STATUS ${G2O_LINK_LIBRARIES}) # prints nothing

message(STATUS "EIGEN3 INCLUDE DIRS: ")
message(STATUS ${EIGEN3_INCLUDE_DIRS}) # prints /usr/local/include/eigen3

CMake将G2O_FOUND设置为1,表示它成功地找到了g2o。但是,没有设置其他两个变量,因此找不到包含文件和库文件。我解决了这个问题

代码语言:javascript
运行
复制
set(G2O_INCLUDE_DIRS
/usr/local/include)

set(G2O_LIBS
/usr/local/lib/libg2o_core.dylib
/usr/local/lib/libg2o_types_slam3d.dylib
#...
)

include_directories(
G2O_INCLUDE_DIRS  
)

target_link_libraries(
    MY-PROJECT
    ${G2O_LIBS}
)

对于CMakeLists.txt,我仍然很好奇,为什么CMake确实找到了g2o,但没有相应地设置变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 12:31:07

为什么CMake确实找到了g2o,但没有相应地设置变量。

FindG2O.cmake没有设置这些变量,所以没有设置它们。为设置G2O_FOUND而检查的变量是G2O_STUFF_LIBRARY AND G2O_CORE_LIBRARY AND G2O_INCLUDE_DIR AND G2O_SOLVERS_FOUND

没有规则要求find_package必须设置_LIBRARIES_INCLUDE_DIRS变量--每个包都有一点不同,请参阅该特定包。如果编写FindXXX文件,则使用接口或导入库而不是变量。

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

https://stackoverflow.com/questions/68620871

复制
相关文章

相似问题

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