3

我正在尝试编译需要 boost的 mlpack ( http://www.mlpack.org/ )。首先我安装了 boostpro 1.51 ( http://www.boostpro.com/download/ ) 并且 boost 现在安装在 C:\Program Files\boost\boost_1_51

然后我使用 cmake 和 mingw32-make 编译并安装了犰狳(mlpack 的另一个依赖项)。Boost也是犰狳的依赖。遵循一些建议(Cmake 没有找到 Boost),我添加到 CMakeLists 文件中:

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:\\Program Files\\boost\\boost_1_51")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:\\Program Files\\boost\\boost_1_51\\lib")

事情进展得很顺利。

现在我正在尝试在 mlpack 上运行 CMake,但收到此错误:

C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindBoos t.cmake:1192 处的 CMake 错误(消息):无法找到请求的 Boost 库。

增强版:1.51.0

Boost 包含路径:C:/Program Files/boost/boost_1_51

找不到以下 Boost 库:

     boost_program_options
     boost_unit_test_framework

没有找到 Boost 库。您可能需要将 BOOST_LIBRARYDIR 设置为包含 Boost 库的目录或将 BOOST_ROOT 设置为 Boost 的位置。调用堆栈(最近的调用优先):CMakeLists.txt:192 (find_package)

我尝试添加(至于犰狳),但没有改善:

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:\\Program Files\\boost\\boost_1_51")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:\\Program Files\\boost\\boost_1_51\\lib")

然后我也尝试添加:

set(BOOST_ROOT "C:\\Program Files\\boost\\boost_1_51")
set(BOOST_INCLUDEDIR "C:\\Program Files\\boost\\boost_1_51")
set(BOOST_LIBRARYDIR "C:\\Program Files\\boost\\boost_1_51\\lib")

对于 BOOST_INCLUDEDIR,我真的不知道我应该指向哪个文件夹。boost_1_51 包含:bin、boost、dist、doc、lib、libs 等

我也试过这个(cmake 使用了错误的 cboost 库),但没有成功。

我也有点困惑,因为犰狳似乎编译没有问题(或者我错过了什么?)

非常感谢

注意:cmakelists 文件的内容:

#Unfortunately this configuration variable is necessary and will need to be
#updated as time goes on and new versions are released.
set(Boost_ADDITIONAL_VERSIONS "1.41" "1.41.0" "1.42" "1.42.0" "1.43" "1.43.0" "1.44" "1.44.0" "1.45.0" "1.46.0" "1.46.1" "1.47.0" "1.48.0" "1.49.0" "1.51.0")
find_package(Boost
    COMPONENTS
      program_options
      unit_test_framework
    REQUIRED
)
include_directories(${Boost_INCLUDE_DIRS})

我自己添加了 1.51.0。


根据我从另一篇文章(CMake 未找到 Boost)中了解到的情况,这可能与未找到名称正确的库有关。在我的 lib 文件夹中,我有(dll 和 lib 文件):

boost_program_options-vc80-mt-1_51.dll
boost_program_options-vc80-mt-gd-1_51.dll
boost_program_options-vc100-mt-1_51.dll
boost_program_options-vc100-mt-gd-1_51.dll

不知何故,我应该玩类似的命令

set(Boost_USE_MULTITHREADED ON)

这样它就会寻找具有预期名称的库????

4

0 回答 0