当前位置: 首页 > 知识库问答 >
问题:

OS X Eclipse

江仲渊
2023-03-14

我成功地在Eclipse中创建了MakeTarget,并添加了一个CMakeListst。txt转换为一个非常简单的项目,并成功了。

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

我的项目在/用户/MyUser/文档/工作区/测试库是/用户/MyUser/文档/MyLib/库

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

CMake/TPL/FindBoost.cmake:1126的CMake错误(消息):无法找到请求的Boost库。

找不到Boost头文件。请将BOOST_ROOT设置到包含Boost的根目录,或BOOST_INCLUDEDIR到包含Boost头文件的目录。调用堆栈(最近的调用优先):
CMakeLists.txt:23(FIND_PACKAGE)

-配置不完整,发生错误!CMake错误在 /Applications/CMake2.8-11.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake: 108(消息):找不到Eigen3(缺少:EIGEN3_INCLUDE_DIRSEIGEN3_VERSION_OK)(需要的是至少版本2.91.0)调用堆栈(最近调用优先): /Applications/CMake2.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小牛队下工作。

编辑

通读文件< code > findegen 3 . cmake 应该有一个名为< code>EIGEN3_INCLUDE_DIRS的变量指向Eigen的INCLUDE目录,这是真的吗?

现在,从以下消息

找不到Eigen3(缺少:EIGEN3_INCLUDE_DIRSEIGEN3_VERSION_OK)

我认为cmake实际上正在查找该目录,就像它所说的那样EIGEN3_VERSION_OK但是为什么cmake找不到其余的包含文件呢?

我还缺少什么吗?我在Eclipse中创建了环境变量,然后在FindEigen3.cmake中添加一行来测试环境变量的值EIGEN3_INCLUDE_DIRS

消息(STATUS"Eigen version:${EIGEN3_INCLUDE_DIRS}")

但我得到的信息是

< code >-Eigen version:EIG EN3 _包含_ DIRS-未找到

有什么建议吗?

编辑

我尝试了与问题相关的答案,但没有一个能够让EclipseCMake找到Boost和Eigen库。我想这里的问题是如何让Eclipse识别系统变量。

共有1个答案

况胡媚
2023-03-14

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

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

或者在CMakeLists.txt之前定义它们

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

或者在OS/shell中使用环境变量。您必须在启动Eclipse之前定义它们。例如来自密苏里州巴什的

export BOOST_ROOT=boost/install/dir
eclipse

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

MESSAGE("Boost root: ${BOOST_ROOT}")
 类似资料:

相关问答

相关文章

相关阅读