为了账号安全,请及时绑定邮箱和手机立即绑定

CMake找不到Boost

CMake找不到Boost

我正在尝试使用CMake配置项目,但是即使它们位于指定的文件夹中,它也无法找到Boost库。我已指定Boost_INCLUDE_DIR,Boost_LIBRARYDIR并且BOOST_ROOT,但是我仍然得到一个错误说CMake的是无法找到的推动作用。这种错误的原因可能是什么?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您确定自己的方法正确吗?这个想法是,CMake的设置BOOST_INCLUDE_DIR,BOOST_LIBRARYDIR和BOOST_ROOT自动。在中执行以下操作CMakeLists.txt:


FIND_PACKAGE(Boost)

IF (Boost_FOUND)

    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})

    ADD_DEFINITIONS( "-DHAS_BOOST" )

ENDIF()

如果boost没有安装在默认位置并且无法被CMake找到,则可以告诉CMake在哪里寻找boost,如下所示:


SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost")

SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/win32libs/boost/lib")

当然,这两行必须在in 之前。FIND_PACKAGE(Boost)CMakeLists.txt


查看完整回答
反对 回复 2019-10-28
?
富国沪深

TA贡献1790条经验 获得超9个赞

通过读取FindBoost.cmake文件本身,可以获得更多帮助。它位于您的“模块”目录中。


一个好的开始是set(Boost_DEBUG 1)-这将吐出大量关于增强功能在哪里,正在寻找什么的信息,并可能有助于解释为什么找不到它。


它还可以帮助您确定它是否BOOST_ROOT正常运行。


FindBoost.cmake如果boost的确切版本未在Available Versions变量中列出,有时也会出现问题。您可以通过阅读更多有关此内容的信息FindBoost.cmake。


最后,FindBoost.cmake过去有一些错误。有一两件事你可以尝试是取的一个新版本FindBoost.cmake出来的CMake的最新版本,并把它贴到您的项目文件夹旁边CMakeLists.txt-那么,即使你有一个旧版本的提振,它将使用新版本FindBoost.cmake是在您项目的文件夹。


祝好运。



查看完整回答
反对 回复 2019-10-28
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

我自己为这个问题苦了一段时间。事实证明,这cmake是使用Boost的命名约定来查找Boost库文件的,其中库名是用于构建它的编译器版本的函数。我们的Boost库是使用构建的GCC 4.9.1,实际上我们的系统中存在该编译器版本;但是,GCC 4.4.7也恰好安装了。碰巧的是,cmake的FindBoost.cmake脚本正在自动检测GCC 4.4.7安装而不是安装GCC 4.9.1,因此正在寻找gcc44文件名中带有“ ”而不是“ gcc49”的Boost库文件。


简单的解决方法是通过将cmake设置Boost_COMPILER为中的“ -gcc49”,强制cmake假定存在GCC 4.9 CMakeLists.txt。进行此更改后,FindBoost.cmake查找并找到了我的Boost库文件。


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 2602 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信