visual-c++ - Visual C++ 11 在 CMake 生成的项目中找不到 Boost unit_test_framework 库

标签 visual-c++ boost cmake

我有一个使用 CMake 和 Boost 的 C++ 项目,它在 Linux 下编译/链接没有任何问题。我正在努力通过 Visual C++ 2012 将其移植到 Windows。

我的CMake配置如下:

set(BOOST_ROOT ${DEPENDENCY_DIR}/boost/)
set(Boost_USE_STATIC_LIBS   ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME    OFF)
find_package(Boost 1.53 COMPONENTS system date_time chrono serialization filesystem program_options random thread regex unit_test_framework)

message(STATUS "Boost Version:" ${Boost_VERSION})
message(STATUS "Boost Include Dirs:" ${Boost_INCLUDE_DIR})
message(STATUS "Boost Libraries:")
foreach(lib ${Boost_LIBRARIES})
        message(STATUS ${lib})
endforeach()

include_directories(${Boost_INCLUDE_DIR})

我在我的目标中使用 target_link_libraries${Boost_LIBRARIES}。同样在 message 命令上方显示所有找到的文件没有任何问题。

此外,所需的库按原样显示 libboost_unit_test_framework-vc110-mt-gd-1_53.lib

screenshot of library dependencies

但是,当我构建其中一个目标时,我得到了

2>LINK : fatal error LNK1104: cannot open file 'boost_unit_test_framework-vc110-mt-gd-1_53.lib'

我删除了另一个 Boost 库,从错误来看,链接器似乎能够找到其他库。 (如 chronoserialization。)但错误消息有点不同。文件名前面有 lib

2>LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc110-mt-gd-1_53.lib'

为什么 VC++ 会为 unit_test_framework 查找前缀为 boost 而不是 libboost 的文件?

最佳答案

好的,检查两件事:

  • 确保文件确实存在于给定路径中,并且您具有读取权限。
  • 确保您对 32 位构建使用 32 位 .LIB,对 64 位 LIB 使用 64 位 .LIB。

关于visual-c++ - Visual C++ 11 在 CMake 生成的项目中找不到 Boost unit_test_framework 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815467/

相关文章:

c++ - 无法通过错误 LNK2001 : unresolved external symbol, 即使我似乎已经包含了所需的内容

c++ - 无限循环不会浪费cpu资源吗?

c++ - 如何在 C++/DirectX 和 HLSL 之间共享结构?

c++ - 模板中的第二个lambda函数导致编译错误(智能感知无法检测到问题)-错误C2988

c++ - Boost 链接错误 undefined reference to GLIBCXX_3.4

boost - 使用 Boost Python 将 Python 列表输入到接受向量的函数中

c++ - 从 C++98 升级到 C++11 导致错误

c++ - 如何使用 CMake 拥有多个二进制目录?

ubuntu - 在 wsl 上安装 doxygen 无法找到 Iconv(缺少 : ICONV_COMPILES)

c++ - 如何使用 WinDbg 分析 VC++ 应用程序的故障转储?