cmake错误:找不到以下Boost库

zha*_*hen 4 c++ boost cmake

我正在使用cmakeboost制作视觉工作室解决方案.我的命令是:

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
Run Code Online (Sandbox Code Playgroud)

虽然我已经设置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
Run Code Online (Sandbox Code Playgroud)

但似乎没有认识到这些.有什么问题?Traceback在这里:http://codepad.org/zgL9tpjo

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

Fra*_*ser 13

由于你的库名都是从头开始的lib,所以看起来你已经构建了boost库的静态版本.该升压命名约定状态:

lib

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

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

-- [ F:/C++/yapimpl/acmake/FindBoost.cmake:570 ] Boost_USE_STATIC_LIBS = OFF
Run Code Online (Sandbox Code Playgroud)

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

... Searching for UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE: boost_unit_test_framework-vc110-mt-1_54;...
Run Code Online (Sandbox Code Playgroud)

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

set(Boost_USE_STATIC_LIBS ON)
Run Code Online (Sandbox Code Playgroud)

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

cmake . -DBoost_USE_STATIC_LIBS=ON
Run Code Online (Sandbox Code Playgroud)

有关FindBoostCMake模块的更多信息,请参阅文档或运行

cmake --help-module FindBoost
Run Code Online (Sandbox Code Playgroud)