2014-02-21 2 views
0

Eclipse에서 Make Target을 생성하고 CMakeListst.txt를 매우 간단한 프로젝트에 추가하면 효과가있었습니다.CMake find_package() Eclipse, OS X

내 다음 단계는 Boost와 Eigen이라는 두 개의 외부 라이브러리를 사용하는 것입니다.

내 프로젝트는 /Users/MyUser/Documents/workspace/Test 라이브러리는 CMakeLists.txt 파일에 내가 라이브러리 폴더에 부스트와 아이겐를 찾아보십시오, 이제 /Users/MyUser/Documents/MyLib/Libraries

을하지만 항상 메시지가 리턴

입니다에

CMake/TPLs/FindBoost.cmake에서 CMake 오류 : 1126 (메시지) : 요청한 부스트 라이브러리를 찾을 수 없습니다.

부스트 헤더 파일을 찾을 수 없습니다. BOOST_ROOT를 Boost가 포함 된 루트 디렉토리 또는 Boost의 헤더가 포함 된 디렉토리에 BOOST_INCLUDEDIR로 설정하십시오. 호출 스택 (가장 최근의 호출부터) :
CMakeLists.txt : 23 (FIND_PACKAGE)

- 불완전한 구성 오류가 발생했습니다! CMake 오류/응용 프로그램/CMake 2.8-11.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (메시지) : Eigen3을 찾을 수 없습니다 (누락 : EIGEN3_INCLUDE_DIRS EIGEN3_VERSION_OK) (필수) 버전 2.91.0) 스택 (가장 최근의 통화 우선) :/Applications/CMake 2.8-11.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE) CMake/TPLs /FindEigen3.cmake:76 (find_package_handle_standard_args) CMakeLists.txt : 30 (FIND_PACKAGE)

내가 CMake에 새로운 오전, 그래서 나는 내 라이브러리에서 검색하는 CMake를 알 수있는 방법이 없을 수 있어야합니다 폴더. 프로젝트를 만들 때 어떻게 CMake 패키지를 찾을 수 있습니까?

현재 나는 Mac OS X Mavericks에서 일하고 있습니다.

편집

, 변수가 아이겐의 포함 디렉토리를 가리키는 EIGEN3_INCLUDE_DIRS이 호출해야 FindEigen3.cmake 파일을 통해 읽기이 사실입니까? 다음과 같은 메시지가

Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIRS EIGEN3_VERSION_OK)

내가 cmake 그것이 EIGEN3_VERSION_OK을 말하는 것처럼 실제로 디렉토리를 찾는하지만 왜 포함 파일의 나머지 부분을 찾을 수 cmake 수 없다는 생각에서 이제

?

아직 뭔가 누락 되었습니까?나는 이클립스 내에서 환경 변수를 생성하고 변수 환경 EIGEN3_INCLUDE_DIRS

message(STATUS "Eigen version: ${EIGEN3_INCLUDE_DIRS}")

그러나 내가 갖는 메시지의 값을 테스트하기 위해 FindEigen3.cmake에 줄을 추가

--Eigen version: EIGEN3_INCLUDE_DIRS-NOTFOUND

입니다 어떤 조언?

편집

나는 질문 관련 답변을 시도했지만 아무도 이클립스 + CMake가 부스트와 아이겐 라이브러리를 찾을 수 있도록 할 수 없었다. 여기서 문제는 이클립스가 시스템 변수를 인식하도록 만드는 방법이다. 이클립스에서 환경 변수를 설정 믿지 않는 경우

+0

가능한 중복 (http://stackoverflow.com/questions/ : 당신은 당신이 정확하게 전달되는지 확인하기 위해 CMakeLists.txt의 일부 debugging messages을 배치 할 수 있습니다 3016448/how-can-i-get-cmake-to-find-my-boost-installation) – Peter

+0

감사합니다 @ 피터하지만 문제는 유닉스 시스템과 관련된 것입니다, 여기 제 문제는 CMake와 함께 Elicpse를 작동시키고 있습니다. 내가 거기에 물건을 시도했지만 CMake 이클립스에서 여전히 동일한 메시지 오류를 보냅니다 – BRabbit27

+0

CMakeBuilder 플러그인을 사용합니까? – Peter

답변

0

, 당신은 직접 cmake 명령에 Cmake-정의를 전달할 수 있습니다/

cmake -E chdir Release/ cmake -G "Unix Makefiles" ... -DBOOST_ROOT:PATHNAME=boost/install/dir ... 

또는 전에 부스트 찾을 수 귀하의 CMakeLists.txt에서 그들을 정의 eigen3

SET(BOOST_ROOT boost/install/dir) 
... 
FIND_PACKAGE(BOOST ...) 

또는 OS/쉘 내의 환경 변수를 사용하십시오. 이클립스를 실행하기 전에 전에 을 정의해야합니다. 예 : bash에서 do

export BOOST_ROOT=boost/install/dir 
eclipse 

boost와 eigen3 모두에 필요한 모든 변수를 정의해야한다는 점에 유의하십시오.

MESSAGE("Boost root: ${BOOST_ROOT}") 
[어떻게 내가 내 부스트 설치를 찾을 수 cmake를 얻을 수 있습니다]의
+0

'MESSAGE ("Boost root : $ {PATH}")와 함께 디버깅 메시지를 사용해 보았지만 Eclipse에서 Make Target을 실행할 때 내 경로 변수가 인식되지 않습니다. 무엇이 문제 일 수 있습니까? – BRabbit27

+1

환경 변수를보고 싶다면'MESSAGE ("Path : $ ENV {PATH}")를 실행하십시오.' – Peter

+0

'CMakeLists.txt' 파일 내에서 환경 변수를 설정하는 작업을했습니다. 그럼에도 불구하고 Eclipse에서 선언 할 때 왜 인식되지 않습니까? – BRabbit27

관련 문제