我设法在Eclipse中创建Make Target
并将一个CMakeListst.txt添加到一个非常简单的项目中并且它有效。
现在,我的下一步是使用两个外部库,Boost和Eigen。
我的项目位于/Users/MyUser/Documents/workspace/Test
这些库是/Users/MyUser/Documents/MyLib/Libraries
现在,在CMakeLists.txt
文件中,我尝试找到Boost和Eigen,它们位于libraries文件夹中,但始终返回的消息是
CMake / TPLs / FindBoost.cmake上的CMake错误:1126(消息):无法 找到请求的Boost库。
无法找到Boost头文件。请将BOOST_ROOT设置为 根目录包含Boost或BOOST_INCLUDEDIR到目录 包含Boost的标题。呼叫堆栈(最近一次呼叫):
CMakeLists.txt:23(FIND_PACKAGE)- 配置不完整,发生错误! / Applications / 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的包?
BTW我在Mac OS X Mavericks下工作。
修改
通过文件FindEigen3.cmake
读取应该有一个名为EIGEN3_INCLUDE_DIRS
的变量指向Eigen的include目录,这是真的吗?
现在,从以下消息
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找到Boost和Eigen库。我想这里的问题是如何使Eclipse识别系统变量。
答案 0 :(得分:0)
如果您不相信在Eclipse中设置环境变量,可以直接将Cmake-defined传递给cmake命令:
cmake -E chdir Release/ cmake -G "Unix Makefiles" ... -DBOOST_ROOT:PATHNAME=boost/install/dir ...
或在找到boost / eigen3
之前在CMakeLists.txt中定义它们SET(BOOST_ROOT boost/install/dir)
...
FIND_PACKAGE(BOOST ... )
或在OS / shell中使用环境变量。您必须在启动Eclipse之前定义它们。例如。来自bash,做
export BOOST_ROOT=boost/install/dir
eclipse
请注意,您必须定义boost和eigen3所需的所有变量。您可以在CMakeLists.txt中放置一些debugging messages以确认您是否正确传递了它们:
MESSAGE("Boost root: ${BOOST_ROOT}")