我有一個C++項目,使用CMake和Boost在Linux下編譯/鏈接,沒有任何問題。我正在努力通過的Visual C這個移植到Windows 2012 ++Visual C++ 11無法在CMake生成的項目中找到Boost unit_test_framework庫
我的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++查找與升壓前綴一個文件,而不是libboost爲unit_test_framework?
您是否試過'add_definitions(-DBOOST_ALL_NO_LIB)'來禁用[boost的自動鏈接功能](http://www.boost.org/doc/libs/release/libs/config/doc/html/boost_config /boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code) – Fraser 2013-04-04 19:43:43