在macOS 11.0上,我下载并构建了g2o (https://github.com/RainerKuemmerle/g2o),并使用cmake --install .
安装了它,然后尝试通过CMake (CMakeLists.txt)将其包含到自己的项目中:
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。但是,没有设置其他两个变量,因此找不到包含文件和库文件。我解决了这个问题
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,但没有相应地设置变量。
发布于 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
文件,则使用接口或导入库而不是变量。
https://stackoverflow.com/questions/68620871
复制相似问题