5

我正在使用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

虽然我设置了BOOST_LIBRARYDIRand BOOST_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/yapimpl 和 https://github.com/Answeror/ACMake 希望有人可以尝试 cmakeyapimpl项目

4

2 回答 2

14

由于您的库名称都以 开头lib,因此您似乎已经构建了 boost 库的静态版本。升压命名约定指出:

lib

      Prefix:除了在 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_LIBSON. 您可以在调用之前find_package(Boost ...)在 CMakeLists.txt 中执行此操作:

set(Boost_USE_STATIC_LIBS ON)

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

cmake . -DBoost_USE_STATIC_LIBS=ON

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

cmake --help-module FindBoost
于 2013-09-04T03:06:50.520 回答
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"
于 2013-09-03T11:23:35.823 回答