gpt4 book ai didi

c++ - 如何在 macOS 中使用 CMake 使库找到 Eigen?

转载 作者:行者123 更新时间:2023-11-28 01:58:44 26 4
gpt4 key购买 nike

我正在尝试使用包含 Ceres Solver 库的 CMake 编译我的项目。我将 macOS Sierra 与 Xcode 8.1 开发工具结合使用。

我用 Homebrew 安装了这个库(brew install ceres-solver)。我手动下载并测试了二进制文件 ( http://ceres-solver.org/building.html#mac-os-x ),效果很好。但是我不能将它包含在我自己的项目中,因为它似乎无法找到 Eigen。这是一个完整的例子:

ceres-test/CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)                                                                                            
project(CeresTest)
find_package(ceres REQUIRED)
add_executable(
TestCeres
src/test_ceres.cpp
)
target_link_libraries(
TestCeres
ceres
)

ceres-test/src/test_ceres.cpp

#include <iostream>

#include "ceres/ceres.h"

int main(int argc, char** argv) {
std::cout << "Works." << std::endl;
return 0;
}

我如何编译它:

mkdir build
cd build
cmake ..
make

完整输出:

me: ceres-test $ mkdir build
me: ceres-test $ cd build/

制作

me: build $ cmake ..
-- The C compiler identification is AppleClang 8.0.0.8000042
-- The CXX compiler identification is AppleClang 8.0.0.8000042
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found required Ceres dependency: Eigen version 3.2.10 in /usr/local/include/eigen3
-- Found required Ceres dependency: Glog in /usr/local/include
-- Found Ceres version: 1.11.0 installed in: /usr/local
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/me/Tests/ceres-test/build

制作

me: build $ make
Scanning dependencies of target TestCeres
[ 50%] Building CXX object CMakeFiles/TestCeres.dir/src/test_ceres.cpp.o
In file included from /Users/me/Tests/ceres-test/src/test_ceres.cpp:3:
In file included from /usr/local/include/ceres/ceres.h:37:
In file included from /usr/local/include/ceres/autodiff_cost_function.h:132:
In file included from /usr/local/include/ceres/internal/autodiff.h:145:
/usr/local/include/ceres/jet.h:165:10: fatal error: 'Eigen/Core' file not found
#include "Eigen/Core"
^
1 error generated.
make[2]: *** [CMakeFiles/TestCeres.dir/src/test_ceres.cpp.o] Error 1
make[1]: *** [CMakeFiles/TestCeres.dir/all] Error 2
make: *** [all] Error 2

我不知道如何解决这个问题。我在网上找到的解决方案都没有帮助。 CMake 似乎可以很好地找到 Eigen 库,所以我不确定如何添加它。

附带说明一下,我也不能直接包含“Eigen/Core”,但我能够编译的测试确实包含它并且这些都很好。我不熟悉如何使用 CMake 处理此类问题。

编辑:如果我将它包含为“eigen3/Eigen/Core”,我可以编译它,但我无法更改 Ceres 的源代码。

最佳答案

修复

include_directories(${EIGEN_INCLUDE_DIR})

在 CMakeLists....

关于c++ - 如何在 macOS 中使用 CMake 使库找到 Eigen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312101/

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