Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用macOS中的CMake使库查找Eigen?_C++_Compiler Errors_Cmake_Include_Macos Sierra - Fatal编程技术网

C++ 如何使用macOS中的CMake使库查找Eigen?

C++ 如何使用macOS中的CMake使库查找Eigen?,c++,compiler-errors,cmake,include,macos-sierra,C++,Compiler Errors,Cmake,Include,Macos Sierra,我正试图用CMake编译我的项目,其中包括Ceres解算器库。我正在使用macOS Sierra和Xcode 8.1开发工具 我用自制软件(brew安装ceres解算器)安装了库。我手动下载并测试了二进制文件(),效果很好。但我不能把它包括在我自己的项目中,因为它似乎找不到Eigen。下面是一个完整的示例: ceres测试/CMakeLists.txt: cmake_minimum_required(VERSION 2.8)

我正试图用CMake编译我的项目,其中包括Ceres解算器库。我正在使用macOS Sierra和Xcode 8.1开发工具

我用自制软件(brew安装ceres解算器)安装了库。我手动下载并测试了二进制文件(),效果很好。但我不能把它包括在我自己的项目中,因为它似乎找不到Eigen。下面是一个完整的示例:

ceres测试/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测试/src/test_ceres.cpp

#include <iostream>

#include "ceres/ceres.h"

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

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

制造

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

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

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

修复了

include_directories(${EIGEN_INCLUDE_DIR})

在CMakeLists中……

我感谢您在找到解决方案后抽出时间回答自己的问题。这也为我解决了这个问题,可能为我节省了不少时间。谢谢
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
include_directories(${EIGEN_INCLUDE_DIR})