cmake错误:找不到以下Boost库

时间:2013-09-03 03:52:32

标签: c++ boost cmake

我正在使用cmakeboost来制作visual studio解决方案。 我的命令是:

F:\C++\yapimpl\build>cmake .. -G"Visual Studio 11" -DBOOST_ROOT=E:\lib\lib\boost
_1_54_0 -DBOOST_LIBRARYDIR=E:\lib\lib\boost_1_54_0\bin\vc11\lib

虽然我设置了BOOST_LIBRARYDIRBOOST_ROOT,但仍然说boost_unit_test_framework 无法找到。

目录E:\lib\lib\boost_1_54_0\bin\vc11\lib确实包含以下文件:

08/08/2013  CSer 03:48        12,738,344 libboost_unit_test_framework-vc110-mt-1
_54.lib
08/08/2013  CSer 03:44        31,489,264 libboost_unit_test_framework-vc110-mt-g
d-1_54.lib
08/08/2013  CSer 04:10        14,109,766 libboost_unit_test_framework-vc110-mt-s
-1_54.lib
08/08/2013  CSer 03:59        32,856,094 libboost_unit_test_framework-vc110-mt-s
gd-1_54.lib

但似乎无法识别。有什么问题? Traceback在这里:http://codepad.org/zgL9tpjo

项目在这里: https://github.com/Answeror/yapimplhttps://github.com/Answeror/ACMake 希望有人可以尝试cmake yapimpl项目

2 个答案:

答案 0 :(得分:13)

由于您的库名称都以lib开头,因此您似乎已经构建了boost库的静态版本。 boost naming conventions州:

  

<强> lib

     

前缀:除了在Microsoft Windows上,每个Boost库名称都以此字符串开头。在Windows上,只有普通的静态库使用lib前缀;导入库和DLL没有。

在CMake生成的输出中,有一行说明:

-- [ F:/C++/yapimpl/acmake/FindBoost.cmake:570 ] Boost_USE_STATIC_LIBS = OFF

此外,您可以看到CMake正在搜索的库名称不以lib开头:

... Searching for UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE: boost_unit_test_framework-vc110-mt-1_54;...

要告诉CMake搜索Boost的静态版本,您只需将Boost_USE_STATIC_LIBS设置为ON即可。您可以在调用find_package(Boost ...)之前在CMakeLists.txt 中执行此操作:

set(Boost_USE_STATIC_LIBS ON)

或者你可以在命令行上设置它:

cmake . -DBoost_USE_STATIC_LIBS=ON

有关FindBoost CMake模块的详情,请参阅the docs或运行

cmake --help-module FindBoost

答案 1 :(得分:0)

我在使用CMake和boost时只设置BOOST_ROOT。其他一切都没有任何问题

"C:\Program Files (x86)\CMake 2.8\bin\cmake" 
-G"Visual Studio 11 Win64" 
-HC:\USB\dev\MyProject -BC:\build\MyProject 
-DBOOST_ROOT="C:\USB\thirdparty\vs2012\boost_1_54_0-x64"