【问题标题】:Cannot find boost with CMake on Linux Mint在 Linux Mint 上找不到 CMake 的提升
【发布时间】:2015-04-22 23:46:44
【问题描述】:

我一直在使用 C++ 开发一个库,并且在尝试将 boost 集成到我的项目中时遇到了一些困难。我保留了找不到 boost 的消息,但另一方面,我使用 Arch 的开发人员没有问题。

我们发现这是因为 Linux Mint(至少使用 libboost-all-dev 软件包)将库安装到 FindBoost 模块未搜索到的 /usr/lib/x86_64-linux-gnu 中。我们通过创建符号链接解决了这个问题:

ln -s /usr/lib/x86_64-linux-gnu/libboost* /usr/lib/

我想知道的是:有没有更好(更容易接受)的方法来解决这个问题,因为当我编译主要项目时,我没有遇到这个问题。

这里是 CMakeLists.txt(有一些遗漏)

cmake_minimum_required(VERSION 2.8)
project(testlibrary CXX)

set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")

set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED OFF)
set(Boost_USE_STATIC_RUNTIME OFF)

find_package(Boost 1.55.0 COMPONENTS unit_test_framework thread log REQUIRED)

include_directories(${Boost_INCLUDE_DIRS})

add_library(testlibrary STATIC ${SOURCE_MAIN})

target_link_libraries(testlibrary ${Boost_LIBRARIES})

【问题讨论】:

  • 您使用的是哪个特定版本的 CMake?

标签: c++ linux boost compilation cmake


【解决方案1】:

可以设置提示BOOST_LIBRARYDIR:

set(BOOST_LIBRARYDIR "/usr/lib/x86_64-linux-gnu")
find_package(Boost 1.55.0 COMPONENTS unit_test_framework thread log REQUIRED)

或者,你可以在运行 CMake 时这样设置:

cmake -DBOOST_LIBRARYDIR="/usr/lib/x86_64-linux-gnu" <project_root>

如果你只是运行:

cmake <project_root>

然后FindBoost.cmake 将在常用位置查找您的 boost 库。

有关您的 CMake 版本 here,请参阅 FindBoost.cmake 的文档。

【讨论】:

  • 好的,但是这可以在我合作伙伴的计算机上运行,​​还是他们必须在他们的最后删除它?他们的只是安装到 /user/lib/
  • 处理这个问题的最佳方法是有一个项目级选项,让您设置BOOST_LIBRARYDIR
  • 你的意思是set(BOOST_LIB_DIR /usr/lib/x86_64-linux-gnu)
  • 忽略我上面的评论,不需要项目级别的选项。在命令行中设置的变量会自动在查找模块中使用。
  • 不,BOOST_LIB_DIR 根本不被 find 模块使用。您必须设置BOOST_LIBRARYDIR。如果您检查源代码,您会看到发生了什么。
猜你喜欢
  • 2022-08-08
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2016-07-08
相关资源
最近更新 更多