我设法在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识别系统变量。
发布于 2014-02-24 08:20:35
当您不相信在Eclipse中设置环境变量时,可以直接将Cmake-defines传递给cmake命令:
cmake -E chdir Release/ cmake -G "Unix Makefiles" ... -DBOOST_ROOT:PATHNAME=boost/install/dir ...或者在找到boost/ CMakeLists.txt 3之前在您的中定义它们
SET(BOOST_ROOT boost/install/dir)
...
FIND_PACKAGE(BOOST ... )或者在OS/shell中使用环境变量。在启动之前,必须定义它们为。例如来自bash,do
export BOOST_ROOT=boost/install/dir
eclipse请注意,您必须定义boost和eigen3所需的所有变量。您可以在您的调试消息中放置一些CMakeLists.txt,以确认您是否正确传递了它们:
MESSAGE("Boost root: ${BOOST_ROOT}")https://stackoverflow.com/questions/21922851
复制相似问题