Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake find_package()Eclipse,OS X_Cmake_Libraries - Fatal编程技术网

CMake find_package()Eclipse,OS X

CMake find_package()Eclipse,OS X,cmake,libraries,Cmake,Libraries,我设法在Eclipse中创建了Make Target,并在一个非常简单的项目中添加了一个CMakeListst.txt,它成功了 现在,我的下一步是使用两个外部库,Boost和Eigen 我的项目位于/Users/MyUser/Documents/workspace/Test中 这些库是/Users/MyUser/Documents/MyLib/libraries 现在,在CMakeLists.txt文件中,我尝试查找Boost和Eigen,它们位于libraries文件夹中,但返回的消息总是

我设法在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\u INCLUDEDIR的根目录 包含Boost的标题。调用堆栈最新的调用优先: CMakeLists.txt:23查找程序包

-配置不完整,出现错误!CMake错误位于/Applications/CMake 2.8-11.app/Contents/share/cmake-2.8/Modules/findpackagehandles标准参数。cmake:108 消息:找不到缺少的特征3:特征3\u INCLUDE\u DIRS 需要的EIGEN3\u版本\u OK至少是版本2.91.0调用 首先堆栈最近的调用:/Applications/CMake 2.8-11.app/Contents/share/cmake-2.8/Modules/findpackagehandles标准参数。cmake:315 _FPHSA故障消息CMake/TPLs/FindEigen3.CMake:76 find\u package\u handle\u standard\u args CMakeLists.txt:30 find\u package

我是CMake的新手,所以我一定是错过了告诉CMake在我的库文件夹中搜索的方法。在构建项目时,如何使用CMake查找包

顺便说一句,我在MacOSX小牛下工作

编辑

读取文件FindEigen3.cmake应该有一个名为EIGEN3_INCLUDE_DIRS的变量,它指向Eigen的INCLUDE目录,这是真的吗

现在,从下面的消息

找不到缺少的特征3:特征3\u包含\u目录特征3\u版本\u正常

我认为cmake实际上是在查找该目录,因为它说EIGEN3_VERSION_OK,但是为什么cmake找不到其余的include文件呢

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

messageSTATUS特征版本:${EIGEN3\u INCLUDE\u DIRS}

但我得到的信息是

-特征版本:特征3_INCLUDE_DIRS-NOTFOUND

有什么建议吗

编辑


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

当您不相信在Eclipse中设置环境变量时,可以将Cmake定义直接传递给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开始,do

export BOOST_ROOT=boost/install/dir
eclipse
请注意,您必须定义boost和eigen3所需的所有变量。您可以在CMakeLists.txt中放置一些,以确认是否正确传递了它们:

MESSAGE("Boost root: ${BOOST_ROOT}")

可能与Thank@Peter重复,但问题与unix系统有关,这里我的问题是让Elicpse与CMake一起工作。我在那里尝试了一些东西,但是Eclipse中的CMake仍然发送相同的消息Error你使用CMakeBuilder插件吗?@Peter nope,我直接从CMake的网站下载并安装在我的Mac上。然后,接着。但是,我在任意路径中安装了Boost和Eigen,我不知道如何使CMake查找我选择的路径。我尝试使用MESSAGEBoost root:${path}的调试消息,但在Eclipse中执行make目标时,无法识别my path变量。可能是什么问题?如果您想查看环境变量,请执行MESSAGEPath:$ENV{PATH}它可以在CMakeLists.txt文件中设置环境变量。然而,为什么在Eclipse中声明时不能识别它们呢?在Eclipse中声明环境变量$ENV{something},但通过SET定义cmake变量${something}。FindModule可以使用cmake变量或环境变量,这取决于FindModule的作者想要什么。