猿问

CMake找不到Boost

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

拉丁的传说
浏览 388回答 3
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

慕田峪7331174

通过读取FindBoost.cmake文件本身,可以获得更多帮助。它位于您的“模块”目录中。一个好的开始是set(Boost_DEBUG 1)-这将吐出大量关于增强功能在哪里,正在寻找什么的信息,并可能有助于解释为什么找不到它。它还可以帮助您确定它是否BOOST_ROOT正常运行。FindBoost.cmake如果boost的确切版本未在Available Versions变量中列出,有时也会出现问题。您可以通过阅读更多有关此内容的信息FindBoost.cmake。最后,FindBoost.cmake过去有一些错误。有一两件事你可以尝试是取的一个新版本FindBoost.cmake出来的CMake的最新版本,并把它贴到您的项目文件夹旁边CMakeLists.txt-那么,即使你有一个旧版本的提振,它将使用新版本FindBoost.cmake是在您项目的文件夹。祝好运。

慕码人8056858

我自己为这个问题苦了一段时间。事实证明,这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库文件。
随时随地看视频慕课网APP
我要回答