2014-02-21 72 views
0

我在Eclipse中設法創建了Make Target,並將一個CMakeListst.txt添加到一個非常簡單的項目中,並且工作正常。CMake find_package()Eclipse,OS X

現在,我的下一步是使用兩個外部庫Boost和Eigen。

我的項目是在/Users/MyUser/Documents/workspace/Test 的庫/Users/MyUser/Documents/MyLib/Libraries

現在,在CMakeLists.txt文件我試圖尋找升壓和徵,這是在庫文件夾,但總是返回的消息是

CMake/TPLs/FindBoost.cmake中的CMake錯誤:1126(消息):無法通過 查找請求的Boost庫。

無法找到Boost頭文件。請將BOOST_ROOT設置爲包含Boost或BOOST_INCLUDEDIR的 根目錄到包含Boost標頭的目錄 。 Call Stack(最近呼叫優先):
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下工作。

編輯

通讀文件FindEigen3.cmake應該有一個變量叫EIGEN3_INCLUDE_DIRS指向本徵的包括目錄,這是真的嗎?

現在,從下面的消息

Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIRS EIGEN3_VERSION_OK)

我認爲cmake的實際上是發現目錄,因爲它說EIGEN3_VERSION_OK但後來爲什麼不能CMake的尋找包括文件的休息嗎?

我還錯過了什麼嗎?我創建在Eclipse環境變量,然後添加一行到FindEigen3.cmake測試環境變量EIGEN3_INCLUDE_DIRS

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

但我得到消息的值是

--Eigen version: EIGEN3_INCLUDE_DIRS-NOTFOUND

有任何建議嗎?

編輯

我試圖與問題有關的答案,但沒有一個能夠使Eclipse + CMake的尋找升壓和本徵庫。我猜這裏的問題是如何讓Eclipse識別系統變量。

+0

可能重複(http://stackoverflow.com/questions/ 3016448/how-can-i-get-cmake-to-find-my-boost-installation) – Peter

+0

謝謝@Peter,但問題與unix系統有關,這裏我的問題是使Elicpse與CMake一起工作。我嘗試了一些東西,但Eclipse中的CMake仍然發送相同的消息錯誤 – BRabbit27

+0

您使用CMakeBuilder插件嗎? – Peter

回答

0

當你沒有在Eclipse設置環境變量相信,你可以通過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/shell中使用環境變量。您必須在啓動Eclipse之前將其定義爲。例如。從bash,

export BOOST_ROOT=boost/install/dir 
eclipse 

請注意,您必須定義boost和eigen3所需的所有變量。你可以把一些debugging messages在你的CMakeLists.txt以確認您正確地傳遞他們:

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