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
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是在您项目的文件夹。
祝好运。
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库文件。
添加回答
举报