1

我正在尝试使用来自 cygwin 的 cmake 构建 cpp-netlib。但是 cmake 尝试查找没有lib前缀的包。而且-DBoost_USE_STATIC_LIBS=ON不会解决问题!

这是我的命令行:

cmake ../cpp-netlib-0.9.4/ -DBOOST_ROOT:string=/cygdrive/c/Dev/boost_1_55_0 -DBoost_USE_STATIC_LIBS=ON -DBoost_DEBUG=ON -DBoost_DETAILED_FAILURE_MSG=ON

搜索:

-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for THREAD_LIBRARY_RELEASE: boost_thread-gcc48-mt-1_55;boost_thread-gcc48-mt;boost_thread-mt-1_55;boost_thread-mt;boost_thread
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for THREAD_LIBRARY_DEBUG: boost_thread-gcc48-mt-d-1_55;boost_thread-gcc48-mt-d;boost_thread-mt-d-1_55;boost_thread-mt-d;boost_thread-mt;boost_thread
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for FILESYSTEM_LIBRARY_RELEASE: boost_filesystem-gcc48-mt-1_55;boost_filesystem-gcc48-mt;boost_filesystem-mt-1_55;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for FILESYSTEM_LIBRARY_DEBUG: boost_filesystem-gcc48-mt-d-1_55;boost_filesystem-gcc48-mt-d;boost_filesystem-mt-d-1_55;boost_filesystem-mt-d;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:930 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: boost_program_options-gcc48-mt-1_55;boost_program_options-gcc48-mt;boost_program_options-mt-1_55;boost_program_options-mt;boost_program_options
-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:966 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: boost_program_options-gcc48-mt-d-1_55;boost_program_options-gcc48-mt-d;boost_program_options-mt-d-1_55;boost_program_options-mt-d;boost_program_options-mt;boost_program_options

这是完整的结果: http: //pastebin.com/ZBfQyWvw

正如您在命令行中看到的,我使用的是 cpp-netlib 0.9.4 和 Boost 1.55.0。

有什么提示吗?

谢谢!

4

1 回答 1

1

看起来您的 Boost 库是使用指定为编译器的 MSVC 构建的(它们名称中的“-vc120-”就是说明)。使用 Cygwin,您需要为 Unix 变体进行构建。

从 Boost 的Windows 构建说明顶部的注释中:

致 Cygwin 和 MinGW 用户的说明

如果您打算从 Windows 命令提示符使用您的工具,那么您来对地方了。如果您计划从 Cygwin bash shell 构建,那么您实际上是在 POSIX 平台上运行的,并且应该按照Unix 变体入门的说明进行操作。其他命令 shell,例如 MinGW 的 MSYS,不受支持——它们可能有效,也可能无效。

您可以看到 CMake 的 FindBoost 模块正在做正确的事情;猜测编译器是GCC。例如,链接的 CMake 输出的第 62 行是:

-- [ /usr/share/cmake-2.8.11.2/Modules/FindBoost.cmake:739 ] 猜到 _boost_COMPILER = -gcc48

于 2014-05-29T12:28:29.983 回答