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

CMake找不到Boost

CMake找不到Boost

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

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

您确定自己的方法正确吗?这个想法是,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-12-12
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

通过读取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-12-12
?
慕码人8056858

TA贡献1803条经验 获得超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-12-12
  • 3 回答
  • 0 关注
  • 361 浏览

添加回答

举报

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