首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake find_package() Eclipse,OS

问CMake find_package() Eclipse,OS
EN

Stack Overflow用户
提问于 2014-02-21 00:41:24
回答 1查看 951关注 0票数 0

我设法在Eclipse中创建了Make Target,并将一个CMakeListst.txt添加到一个非常简单的项目中,它起了作用。

现在,我的下一步是使用两个外部库,Boost和Eigen。

我的项目在/Users/MyUser/Documents/workspace/Test中,库是/Users/MyUser/Documents/MyLib/Libraries

现在,在CMakeLists.txt文件中,我尝试找到Boost和Eigen,它们位于库文件夹中,但返回的消息总是

CMake错误在CMake/TPLs/FindBoost.cmake:1126 (消息):无法找到请求的Boost库。 无法找到Boost头文件。请将BOOST_ROOT设置为包含Boost的根目录,或将BOOST_INCLUDEDIR设置为包含Boost的标题的目录。Call Stack (最近一次先调用): CMakeLists.txt:23 (FIND_PACKAGE) -配置不完整,出现错误!/Applications/CMake 2.8-11.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (Message)中的CMake错误:无法找到Eigen3 (缺少: EIGEN3_INCLUDE_DIRS EIGEN3_VERSION_OK) (至少需要版本"2.91.0")调用堆栈(最近一次调用):/CMake/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小牛下工作。

编辑

在读取文件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找到Boost和特征库。我猜这里的问题是如何让Eclipse识别系统变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 08:20:35

当您不相信在Eclipse中设置环境变量时,可以直接将Cmake-defines传递给cmake命令:

代码语言:javascript
复制
cmake -E chdir Release/ cmake -G "Unix Makefiles" ... -DBOOST_ROOT:PATHNAME=boost/install/dir ...

或者在找到boost/ CMakeLists.txt 3之前在您的中定义它们

代码语言:javascript
复制
SET(BOOST_ROOT boost/install/dir)
...
FIND_PACKAGE(BOOST ... )

或者在OS/shell中使用环境变量。在启动之前,必须定义它们为。例如来自bash,do

代码语言:javascript
复制
export BOOST_ROOT=boost/install/dir
eclipse

请注意,您必须定义boost和eigen3所需的所有变量。您可以在您的调试消息中放置一些CMakeLists.txt,以确认您是否正确传递了它们:

代码语言:javascript
复制
MESSAGE("Boost root: ${BOOST_ROOT}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21922851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档