【发布时间】:2023-02-02 00:53:48
【问题描述】:
我想使用 vcpkg 安装 RTABMap,然后使用 VSCode 作为编辑器将 RTABMap 包含到我的 C++ 项目中。我使用 vcpkg install rtabmap:x64-windows 按照他们的 wiki 上的描述安装了 RTABMap(我也尝试了 x86 三元组),然后想在我的项目中使用它。首先,我根据他们存储库中的 example 编写了以下 cmake 文件:
cmake_minimum_required(VERSION 3.5)
project(RTABMap_Test VERSION 0.1.0)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}")
find_package(RTABMap REQUIRED)
find_package(OpenCV REQUIRED)
set(INCLUDE_DIRS
${RTABMap_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
)
set(LIBRARIES
${RTABMap_LIBRARIES}
${OpenCV_LIBRARIES}
)
include_directories(${INCLUDE_DIRS})
add_executable(RTABMap_Test main.cpp)
target_link_libraries(RTABMap_Test ${LIBRARIES})
和以下 main.cpp 文件:
#include <rtabmap/core/Rtabmap.h>
int main(void) {
return 0;
}
VSCode中的cmake设置如下:
"cmake.configureSettings": {
"CMAKE_TOOLCHAIN_FILE": "G:/.vcpkg/scripts/buildsystems/vcpkg.cmake",
"VCPKG_TARGET_TRIPLET": "x64-windows"
}
但是,当我从 VSCode 运行 CMake: Build 时,cmake 失败并显示以下消息:
-- 构建于:Visual Studio 17 2022 -- 选择 Windows SDK 版本 10.0.19041.0 以面向 Windows 10.0.19044。 -- C 编译器标识为 MSVC 19.32.31332.0 -- CXX编译器标识为MSVC 19.32.31332.0 -- 检测 C 编译器 ABI 信息 -- 检测 C 编译器 ABI 信息 - 完成 -- 检查工作的 C 编译器:C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - 已跳过 -- 检测 C 编译特性 -- 检测 C 编译特性 - 完成 -- 检测 CXX 编译器 ABI 信息 -- 检测 CXX 编译器 ABI 信息 - 完成 -- 检查工作的 CXX 编译器:C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - 跳过 -- 检测 CXX 编译特性 -- 检测 CXX 编译特性 - 完成 G:/.vcpkg/installed/x64-windows/share/rtabmap/RTABMapConfig.cmake:78 处的 CMake 警告(消息): 要求“gui”模块,但 RTABMap 尚未构建具有 gui 支持。 调用堆栈(最近的调用在前): G:/.vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package) CMakeLists.txt:6 (find_package)
-- 发现 RTABMap: RTABMap_CORE_RELEASE-NOTFOUND;RTABMap_UTILITE_RELEASE-NOTFOUND;optimized;G:/.vcpkg/installed/x64-windows/lib/zlib.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib /zlibd.lib
-- 找到 Protobuf:G:/.vcpkg/installed/x64-windows/tools/protobuf/protoc.exe(找到版本“3.21.12.0”) -- 寻找 pthread.h -- 寻找 pthread.h - 未找到 -- 找到的线程:TRUE
-- 发现 TIFF: optimized;G:/.vcpkg/installed/x64-windows/lib/tiff.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/tiffd.lib (found version " 4.5.0")
-- 找到 HDF5:hdf5::hdf5-shared(找到版本“1.12.2”)
-- Found ZLIB: optimized;G:/.vcpkg/installed/x64-windows/lib/zlib.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/zlibd.lib (找到合适的版本“1.2.13”,最低要求是“1”) -- 发现 JPEG: optimized;G:/.vcpkg/installed/x64-windows/lib/jpeg.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/jpeg.lib (found version " 62") -- 找到 ZLIB: optimized;G:/.vcpkg/installed/x64-windows/lib/zlib.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/zlibd.lib (found version " 1.2.13") -- 找到 PNG: optimized;G:/.vcpkg/installed/x64-windows/lib/libpng16.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/libpng16d.lib (found version " 1.6.39") -- 找到 GIF: optimized;G:/.vcpkg/installed/x64-windows/lib/gif.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/gif.lib (找到版本" 5.2.1") -- 找到 LibArchive:G:/.vcpkg/installed/x64-windows/debug/lib/archive.lib(找到版本“3.6.2”) -- 找到 OpenCV:G:/.vcpkg/installed/x64-windows(找到版本“4.7.0”) -- 配置完成 CMake 错误:此项目中使用了以下变量,但它们被设置为 NOTFOUND。 请设置它们或确保在 CMake 文件中正确设置和测试它们: RTABMap_CORE_RELEASE 由目录 G:/FKIE/rtabmap_test 中的目标“RTABMap_Test”链接 RTABMap_UTILITE_RELEASE 由目录 G:/FKIE/rtabmap_test 中的目标“RTABMap_Test”链接-- 生成完成 CMake 生成步骤失败。无法正确重新生成构建文件。
另一方面,当我运行
cmake . -DCMAKE_TOOLCHAIN_FILE=G:/.vcpkg/scripts/buildsystems/vcpkg.cmake时,我得到这个错误:-- 选择 Windows SDK 版本 10.0.19041.0 以面向 Windows 10.0.19044。 G:/.vcpkg/installed/x64-windows/share/rtabmap/RTABMapConfig.cmake:78 处的 CMake 警告(消息): 要求“gui”模块,但 RTABMap 尚未构建具有 gui 支持。 调用堆栈(最近的调用在前): G:/.vcpkg/scripts/buildsystems/vcpkg.cmake:843 (_find_package) CMakeLists.txt:6 (find_package)
-- Found ZLIB: optimized;G:/.vcpkg/installed/x64-windows/lib/zlib.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/zlibd.lib (找到合适的版本“1.2.13”,最低要求是“1”) -- 找到 ZLIB: optimized;G:/.vcpkg/installed/x64-windows/lib/zlib.lib;debug;G:/.vcpkg/installed/x64-windows/debug/lib/zlibd.lib (found version " 1.2.13") -- 配置完成 CMake 错误:此项目中使用了以下变量,但它们被设置为 NOTFOUND。 请设置它们或确保在 CMake 文件中正确设置和测试它们: RTABMap_CORE_RELEASE 由目录 G:/FKIE/rtabmap_test 中的目标“RTABMap_Test”链接 RTABMap_UTILITE_RELEASE 由目录 G:/FKIE/rtabmap_test 中的目标“RTABMap_Test”链接
-- 生成完成 CMake 生成步骤失败。无法正确重新生成构建文件。
两个缺少的变量设置在位于 RTABMap 存储库根目录的
RTABMapConfig.cmake.in中,并由CMakeLists.txt使用,所以我假设我不必手动设置它们,这意味着——尽我所能告诉——当 vcpkg 安装 RTABMap 时,它没有正确配置 RTABMap。该怎么办?
【问题讨论】:
-
两个缺少的变量在位于 RTABMap 存储库根目录的 RTABMapConfig.cmake.in 中设置并由 CMakeLists.txt 使用,因此我假设我不必手动设置它们不,当您配置和生成项目时,
RTABMapConfig.cmake.in文件应该使用 https://cmake.org/cmake/help/latest/command/configure_file.html 在构建文件夹中生成一个RTABMapConfig.cmake文件 -
但这正是 RTABMap 的 CMakeLists.txt 中发生的情况。所以我不完全跟着你。
-
您说当 CMake 生成
RTABMap项目时,您在RTABMapConfig.cmake.in中发现了两个缺失的变量,它应该填充生成的RTABMapConfig.cmake文件中的变量。当您在 CMakeLists.txt 中使用 find_package() 时,这些应该在 find_package 读取此文件时使用。有RTABMapConfig.cmake文件吗?