2016-10-28 33 views
0

私はCeresソルバーライブラリを含むCMakeで私のプロジェクトをコンパイルしようとしています。私はMacOS SierraとXcode 8.1の開発ツールを使用しています。ライブラリをmacOSでCMakeでEigenを見つける方法を教えてください。

私はHomebrew(brew install ceres-solver)でライブラリをインストールしました。バイナリを手動でダウンロードしてテストしましたが(http://ceres-solver.org/building.html#mac-os-x)、うまく動作します。しかし私はEigenを見つけることができないので自分のプロジェクトには含めることができません。ここでは完全な例である:

セレステスト/ 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                               
) 

セレステスト/ 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/ 

cmakeの

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のソースコードを変更できません。

CMakeListsで
include_directories(${EIGEN_INCLUDE_DIR}) 

で固定

答えて

1

....

+0

私はあなたが解決策を見つけた後、あなた自身の質問に答えるために時間がかかったことを感謝しています。これは私のためにそれを固定し、おそらくかなりの時間を節約しました。ありがとう! – Thomas

関連する問題