【发布时间】: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/…