【发布时间】:2017-05-23 11:02:55
【问题描述】:
我有一个执行此操作的 CMake 文件:
find_package(Boost COMPONENTS system filesystem)
add_library(MyModule MODULE main.cpp)
target_include_directories(MyModule PUBLIC ${Boost_INCLUDE_DIRS})
target_link_libraries(MyModule Boost::system Boost::filesystem)
我使用 VS 2017 作为我的生成器。当我用cmake生成项目文件时,它找到boost_system-vc141-mt-1_63.lib,我可以看到它在vcxproj的链接规则中。但是,当我尝试编译时出现此错误:
LINK : 致命错误 LNK1104: 无法打开文件 'libboost_system-vc140-mt-1_63.lib
注意不同的生成器(vc140 与 vc141)。我知道我的编译器输出了正确的值,因为我从源代码构建了 boost,所以我尝试将 vc141 重命名为 vc140,但错误保持不变。我还确认项目文件中没有引用vc140。
发生了什么事?如何强制 boost 链接到正确的版本?
【问题讨论】:
-
在下面添加了我的解决方案。发布这个,以便我以后遇到同样的问题时可以找到它。当我找到解决方案时,是因为一位同事提到了“自动链接”。否则我不会找到解决方案。
标签: visual-studio boost cmake