我正在尝试编译需要 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)
这样它就会寻找具有预期名称的库????