我有一个使用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
。
然而,当我构建其中一个目标时,我得到了
2>LINK : fatal error LNK1104: cannot open file 'boost_unit_test_framework-vc110-mt-gd-1_53.lib'
我删除了另一个Boost库,从错误看,链接器似乎能够找到其他的。 (例如chrono
或serialization
。)但错误消息有点不同。文件名前面有 lib 。
2>LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc110-mt-gd-1_53.lib'
为什么VC ++会为unit_test_framework查找前缀为 boost 而不是 libboost 的文件?
答案 0 :(得分:0)
好的,检查两件事: