2017-09-04 50 views
2

我有一个项目,使用升压1.64.0,因为我需要提升过程。它的CMakeList处理和使用Qt/Clion编译的代码,但是当我在Visual Studio 2017中使用相同的代码时,出现以下错误(波纹管是boost 1.63.0的输出,但是我在第一次尝试1.64.0时)。Visual Studio 2017兼容性与提升1.64.0/1.63.0问题

1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:987 ] _boost_TEST_VERSIONS = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:989 ] Boost_USE_MULTITHREADED = ON 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:991 ] Boost_USE_STATIC_LIBS = ON 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:993 ] Boost_USE_STATIC_RUNTIME = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:995 ] Boost_ADDITIONAL_VERSIONS = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:997 ] Boost_NO_SYSTEM_PATHS = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1065 ] Declared as CMake or Environmental Variables: 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1067 ] BOOST_ROOT = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1069 ] BOOST_INCLUDEDIR = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1071 ] BOOST_LIBRARYDIR = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1073 ] _boost_TEST_VERSIONS = 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1166 ] location of version.hpp: D:/Program Files/boost_1_63_0/boost/version.hpp 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1190 ] version.hpp reveals boost 1.63.0 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1276 ] guessed _boost_COMPILER = -vc150 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1286 ] _boost_MULTITHREADED = -mt 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1330 ] _boost_RELEASE_ABI_TAG = - 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1332 ] _boost_DEBUG_ABI_TAG = -gd 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1388 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = D:/Program Files/boost_1_63_0/bin/x64;D:/Program Files/boost_1_63_0/lib;D:/Program Files/boost_1_63_0/stage/lib;D:/Program Files/boost_1_63_0/lib64-msvc-15.0;D:/Program Files/boost_1_63_0/lib;D:/Program Files/boost_1_63_0/../lib;D:/Program Files/boost_1_63_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib_boost_LIBRARY_SEARCH_DIRS_DEBUG = D:/Program Files/boost_1_63_0/bin/x64;D:/Program Files/boost_1_63_0/lib;D:/Program Files/boost_1_63_0/stage/lib;D:/Program Files/boost_1_63_0/lib64-msvc-15.0;D:/Program Files/boost_1_63_0/lib;D:/Program Files/boost_1_63_0/../lib;D:/Program Files/boost_1_63_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib 
1> CMake Warning at C:/.../cmake-3.7/Modules/FindBoost.cmake:746 (message): 
1> Imported targets not available for Boost version 106300 
1> Call Stack (most recent call first): 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:850 (_Boost_COMPONENT_DEPENDENCIES) 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:1439 (_Boost_MISSING_DEPENDENCIES) 
1> projects/Visualizer/CMakeLists.txt:121 (find_package) 
1> 
1> 
1> CMake Warning at C:/.../cmake-3.7/Modules/FindBoost.cmake:746 (message): 
1> Imported targets not available for Boost version 106300 
1> Call Stack (most recent call first): 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:850 (_Boost_COMPONENT_DEPENDENCIES) 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:1439 (_Boost_MISSING_DEPENDENCIES) 
1> projects/Visualizer/CMakeLists.txt:121 (find_package) 
1> 
1> 
1> CMake Warning at C:/.../cmake-3.7/Modules/FindBoost.cmake:746 (message): 
1> Imported targets not available for Boost version 106300 
1> Call Stack (most recent call first): 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:850 (_Boost_COMPONENT_DEPENDENCIES) 
1> C:/.../cmake-3.7/Modules/FindBoost.cmake:1439 (_Boost_MISSING_DEPENDENCIES) 
1> projects/Visualizer/CMakeLists.txt:121 (find_package) 
1> 
1> 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1527 ] Searching for SYSTEM_LIBRARY_RELEASE: libboost_system-vc150-mt-1_63;libboost_system-vc150-mt;libboost_system-mt-1_63;libboost_system-mt;libboost_system;libboost_system-vc150-mt-s-1_63;libboost_system-vc150-mt-s;libboost_system-mt-s-1_63;libboost_system-mt-s 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1569 ] Searching for SYSTEM_LIBRARY_DEBUG: libboost_system-vc150-mt-gd-1_63;libboost_system-vc150-mt-gd;libboost_system-mt-gd-1_63;libboost_system-mt-gd;libboost_system-mt;libboost_system;libboost_system-vc150-mt-s-gd-1_63;libboost_system-vc150-mt-s-gd;libboost_system-mt-s-gd-1_63;libboost_system-mt-s-gd 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1527 ] Searching for FILESYSTEM_LIBRARY_RELEASE: libboost_filesystem-vc150-mt-1_63;libboost_filesystem-vc150-mt;libboost_filesystem-mt-1_63;libboost_filesystem-mt;libboost_filesystem;libboost_filesystem-vc150-mt-s-1_63;libboost_filesystem-vc150-mt-s;libboost_filesystem-mt-s-1_63;libboost_filesystem-mt-s 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1569 ] Searching for FILESYSTEM_LIBRARY_DEBUG: libboost_filesystem-vc150-mt-gd-1_63;libboost_filesystem-vc150-mt-gd;libboost_filesystem-mt-gd-1_63;libboost_filesystem-mt-gd;libboost_filesystem-mt;libboost_filesystem;libboost_filesystem-vc150-mt-s-gd-1_63;libboost_filesystem-vc150-mt-s-gd;libboost_filesystem-mt-s-gd-1_63;libboost_filesystem-mt-s-gd 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1527 ] Searching for THREAD_LIBRARY_RELEASE: libboost_thread-vc150-mt-1_63;libboost_thread-vc150-mt;libboost_thread-mt-1_63;libboost_thread-mt;libboost_thread;libboost_thread-vc150-mt-s-1_63;libboost_thread-vc150-mt-s;libboost_thread-mt-s-1_63;libboost_thread-mt-s 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1569 ] Searching for THREAD_LIBRARY_DEBUG: libboost_thread-vc150-mt-gd-1_63;libboost_thread-vc150-mt-gd;libboost_thread-mt-gd-1_63;libboost_thread-mt-gd;libboost_thread-mt;libboost_thread;libboost_thread-vc150-mt-s-gd-1_63;libboost_thread-vc150-mt-s-gd;libboost_thread-mt-s-gd-1_63;libboost_thread-mt-s-gd 
1> -- [ C:/.../cmake-3.7/Modules/FindBoost.cmake:1639 ] Boost_FOUND = 1 
1> CMake Error at C:/.../cmake-3.7/Modules/FindBoost.cmake:1795 (message): 
1> Unable to find the requested Boost libraries. 
1> 
1> Boost version: 1.63.0 
1> 
1> Boost include path: D:/Program Files/boost_1_63_0 
1> 
1> Could not find the following static Boost libraries: 
1> 
1>   boost_system 
1>   boost_filesystem 
1>   boost_thread 
1> 
1> No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the 
1> directory containing Boost libraries or BOOST_ROOT to the location of 
1> Boost. 

至于建议here我降级的推动1.63.0但它再次得到了同样的错误。

有没有关于这个问题的建议(我确定我设置了BOOST_ROOTBOOST_INCLUDEDIRBOOST_LIBRARYDIR)?

我能升级VS2017-的cmake向CMake使用3.8(安装CMake 3.8独立和浏览VS2017使用它)?

VS2017(CMake的3.7)是该版本提升的兼容?

+1

见['FindBoost.cmake'](https://github.com/Kitware/CMake/blob/v3.7.0/Modules/FindBoost.cmake#L946)的来源。所以,看看这个,我们可以看到CMake 3.7.0只是将最新版本的[1.62.0] [以及](https://github.com/Kitware/CMake/blob/v3.7.0/) Modules/FindBoost.cmake#L429)无法检测使用MSVS 2017编译器构建的boost(尽管CMake本身支持它)。 –

+0

@DanMašek谢谢。现在我很好奇,这意味着什么“...... Cmake无法检测使用MSVS 2017编译器构建的boost ...”? CMake必须检查libs和dll的存在,只需要参考boost路径即可完成。它必须做更多的事情?最后,这个(你的评论)意味着在VS2017-cmake项目中没有办法使用boost。 –

+0

我没有看到为什么你不应该能够安装CMake的最新版本并使用它(我没有MSVS 2017,但我已经使用CMake多年 - 现在不是确定除了复杂的事情之外,MS可以添加什么)。 |关于你的最后一个问题 - windows上的boost库包含一个名称中的标记,表示它们是用哪个编译器编译的。在3.7.0中,检测脚本不知道标记“-vc141”,它对应于最新的MSVC。 |当然,这只是一个脚本,所以如果需要,您可以修补它以添加丢失的东西。 –

回答

1

我使用的Visual Studio编译它使用升压1.64.0基于CMake的项目。问题是Visual Studio的CMake(v3.7)无法找到boost libs/dll。如图出丹马塞克CMake的添加令牌-vc141提振库/ DLL时建立它和FindBoost必须知道它(令牌-vc140-vc141或等),以便找到他们。

在CMake(v3.7)中,此标记为-v150,用于使用Visual Studio 2017构建的增强版。使用-v141更改该版本可以使每件事情都成真。

摘要:为了找到的Visual Studio 2017年升压库/ dll文件:查找文件FindBoost.cmake和线431变化set(_boost_COMPILER "-vc150")set(_boost_COMPILER "-vc141")