gpt4 book ai didi

c++ - 使用 Ceres 求解器进行 CMake-ing 项目时冲突的 Eigen 依赖项

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:25 27 4
gpt4 key购买 nike

我安装了 ceres-solver 使用

brew install ceres-solver

在 macOS 上。

我为使用 Ceres 的客户项目创建了一个 CMake.txt

cmake_minimum_required(VERSION 2.8)

project(helloworld)

find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})

# helloworld
add_executable(helloworld helloworld.cpp)
target_link_libraries(helloworld ${CERES_LIBRARIES})

但是,当我运行以下命令时

cmake 。 -Bbuild

出现以下错误

CMake Error at /usr/local/lib/cmake/Ceres/CeresConfig.cmake:88 (message):
Failed to find Ceres - Found Eigen dependency, but the version of Eigen
found (3.3.90) does not exactly match the version of Eigen Ceres was
compiled with (3.3.7). This can cause subtle bugs by triggering violations
of the One Definition Rule. See the Wikipedia article
http://en.wikipedia.org/wiki/One_Definition_Rule for more details
Call Stack (most recent call first):
/usr/local/lib/cmake/Ceres/CeresConfig.cmake:223 (ceres_report_not_found)
CMakeLists.txt:5 (find_package)


CMake Error at CMakeLists.txt:5 (find_package):
Found package configuration file:

/usr/local/lib/cmake/Ceres/CeresConfig.cmake

but it set Ceres_FOUND to FALSE so package "Ceres" is considered to be NOT
FOUND.


-- Configuring incomplete, errors occurred!

如何删除 Eigen 的冲突版本?我不记得我过去是如何安装它的。我也尝试运行 brew uninstall Eigen,但这并没有使错误消失。

感谢您的帮助。

最佳答案

所以 Ceres 是用 Eigen 3.3.7 构建的,但你的 helloworld 构建正在寻找 Eigen 3.3.90。我发现跟踪此类 cmake 问题的最佳方法是在运行 cmake 配置步骤时使用 --trace-expand--debug-output 选项。它会生成大量输出,因此将其全部重定向到一个文件,然后搜索 find_package eigen 语句。例如

cmake . -Bbuild --debug-output --trace-expand > cmake.out 2>&1

关于c++ - 使用 Ceres 求解器进行 CMake-ing 项目时冲突的 Eigen 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com