【问题标题】:Cmake cannot find boost library directoryCmake找不到boost库目录
【发布时间】:2017-07-19 13:56:39
【问题描述】:

我正在尝试使用英特尔编译器在 Visual Studio 2010 上安装 mlpack,我正在关注此链接 - https://keon.io/mlpack/mlpack-on-windows/

我正在尝试运行某些 CMake 命令,但由于错误而失败 -

C:\projects\mlpack-2.1.1\build> cmake -G "Visual Studio 10 2010 Win64" -T"Intel C++ compiler XE 14.0" 
-DBLAS_LIBRARY:FILEPATH="C:/projects/mlpack-.1.1/packages/OpenBLAS.0.2.14.1/lib/naive/lib/x64/libopenblas.dll.a" 
-DLAPACK_LIBRARY:FILEPATH="C:/projects/mlpack-.1.1/packages/OpenBLAS.0.2.14.1/lib/ative/lib/x64/libopenblas.dll.a" 
-DARMADILLO_INCLUDE_DIR="C:/projects/armadillo-.800.1/include" 
-DARMADILLO_LIBRARY:FILEPATH="C:/projects/armadillo-.800.1/build/Debug/armadillo.lib" 
-DBOOST_INCLUDEDIR:PATH="C:\projects\mlpack-2.1.1\packages\boost.1.63.0.0\lib\native\include" 
-DBOOST_LIBRARYDIR:PATH="C:\projects\mlpack-2.1.1\packages\boost_libs" -DDEBUG=OFF -PROFILE=OFF ..


Unable to find the requested Boost libraries.
Boost version: 1.63.0
Boost include path:
C:/projects/mlpack-2.1.1/packages/boost.1.63.0.0/lib/native/include

Could not find the following Boost libraries:

      boost_program_options
      boost_unit_test_framework
      boost_serialization

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.
Call Stack (most recent call first):
CMakeLists.txt:279 (find_package)

但是,C:\projects\mlpack-2.1.1\packages\boost_libs 目录包含所有必需的库

CMakeLists.txt 在第 279 行有这个

set(Boost_ADDITIONAL_VERSIONS
"1.49.0" "1.50.0" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55.0" "1.63.0")
find_package(Boost 1.49 #Line 279
  COMPONENTS
    program_options
    unit_test_framework
    serialization
  REQUIRED
)

我将第 279 行更改为 find_package(Boost 1.49 但没有用。 我还尝试将“\”更改为“/”,反之亦然。可能是什么错误?

【问题讨论】:

  • What could be the error? - 您的 Boost 库与生成器 Visual Studio 10 2010 Win64 不兼容。
  • 我用的是 Intel 编译器吧!
  • 将选项-DBoost_DEBUG=on 传递给cmake,然后查看实际搜索了哪些库文件。然后将这些文件与您拥有的文件进行比较。
  • 如果我使用的是英特尔工具包,则会收到错误消息。如果我没有使用英特尔工具包而只是使用 msvc,我会遇到一些其他错误,但会找到 boost 库。为什么英特尔找不到 boost 库?
  • Why is intel not finding boost libraries? - 因为 Boost 库旨在与特定编译器一起使用。 Msvc 使用一个库,Intel 编译器使用 another 个。

标签: visual-studio-2010 boost cmake mlpack


【解决方案1】:

错误是您的 CMake 版本不支持 Boost 1.63。

在 CMake 3.7.2 中引入了对 Boost 1.63 的支持;更新 CMake,你会没事的。

【讨论】:

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