【问题标题】:cygwin cmake cannot find boost librarycygwin cmake 找不到 boost 库
【发布时间】:2015-02-02 10:27:40
【问题描述】:

我正在尝试从 Windows 的 Cygwin 终端配置 Cmake,我的 Boost 库位于 /usr/src/boost_1_54_0/libs。我的 CMake 配置文件包含:

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 
set(Boost_USE_STATIC_RUNTIME OFF) 
find_package(Boost 1.54.0 COMPONENTS date_time filesystem program_options serialization thread REQUIRED) 
include_directories(${Boost_INCLUDE_DIRS})

但是,CMake 给了我以下错误:

Boost version: 1.54.0

Boost include path: /usr/src/boost_1_54_0

The following Boost libraries could not be found:

        boost_date_time
        boost_filesystem
        boost_program_options
        boost_serialization
        boost_thread

No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.

然后我尝试在find_package方法之前用下面一行手动指定Boostlib的目录:

set(BOOST_LIBRARYDIR /usr/src/boost_1_54_0/libs)

但它也不起作用。

谁能帮帮我?

【问题讨论】:

  • 该消息表明 CMake 可以找到标头,但不能找到库。 /usr/src/boost_1_54_0/libs的内容是什么?如果你使用Boost_USE_STATIC_LIBS OFF 会发生什么,因为这就是我在 Cygwin 上成功使用的?
  • 你有没有像boost.org/doc/libs/1_57_0/more/getting_started/… 建议的那样构建了一些不是只有标头的 boost 库?
  • 目录 /usr/src/boost_1_54_0/libs 包含所有这些包。如果我将参数设置为 OFF,我会遇到同样的错误。
  • @JackJianpengCheng:如果它包含正确的库,则可能不会出错。这就是我们要问的原因... Boost 可以在各种文件夹结构中构建共享库和静态库。如果您的设置与 CMake FindBoost.cmake 期望的不匹配,那么您就会干涸。但是如果没有查看您的设置,我们无法告诉您出了什么问题……您可能还想查看右侧的各种“相关”链接。很多关于“cmake 找不到提升”的现有问题......
  • 其实我只是按照这里的设置:boerngen-schmidt.de/2013/07/…

标签: c++ boost cmake cygwin


【解决方案1】:

要查找 Boost 库,cmake 依赖于环境变量 BOOST_ROOT。它应该指向包含您的 Boost lib(而不是 libs)和 include 的目录

在调用 cmake 之前在 Cygwin 中定义它,它应该可以工作。

在 csh 中:

setenv BOOST_ROOT "/usr/src/boost_1_54_0"

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2019-12-29
    • 2020-11-29
    • 2017-07-19
    相关资源
    最近更新 更多