在Windows上获取CMake以查找vc120 Boost库

时间:2015-05-31 09:39:05

标签: boost cmake visual-studio-2015

CMake正在寻找与我安装的不同的增强文件,我不知道如何解决它。我使用的是64位Windows 7,VisualStudio社区2015,并使用最新的64位Boost boost_1_58_0-msvc-12.0-64.exe

我的CMake文件的相关部分是:

SET          ( Boost_DEBUG                ON  )
SET          ( Boost_DETAILED_FAILURE_MSG ON  )
SET          ( Boost_USE_STATIC_LIBS      ON  )
SET          ( Boost_USE_MULTITHREADED    ON  )
SET          ( Boost_USE_STATIC_RUNTIME   OFF )
FIND_PACKAGE ( Boost COMPONENTS regex date_time REQUIRED )

启用调试和详细消息后,我可以看到CMake正在查找正确的位置,但正在寻找“vc140”而不是“vc120”:

location of version.hpp: C:/boost_1_58_0/boost/version.hpp
version.hpp reveals boost 1.58.0
guessed _boost_COMPILER = -vc140
_boost_MULTITHREADED = -mt
_boost_RELEASE_ABI_TAG = -
_boost_DEBUG_ABI_TAG = -gd
_boost_LIBRARY_SEARCH_DIRS = C:\boost_1_58_0\lib64-msvc-12.0;C:\boost_1_58_0/lib;C:\boost_1_58_0/stage/lib;C:/boost_1_58_0/lib;C:/boost_1_58_0/../lib;C:/boost_1_58_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib
Searching for REGEX_LIBRARY_RELEASE:
libboost_regex-vc140-mt-1_58;
libboost_regex-vc140-mt;
libboost_regex-mt-1_58;
libboost_regex-mt;
libboost_regex

我的文件以“120”命名:

>dir /b c:\boost_1_58_0\lib64-msvc-12.0\libboost_regex-*
libboost_regex-vc120-mt-1_58.lib
libboost_regex-vc120-mt-gd-1_58.lib
libboost_regex-vc120-mt-s-1_58.lib
libboost_regex-vc120-mt-sgd-1_58.lib
libboost_regex-vc120-s-1_58.lib
libboost_regex-vc120-sgd-1_58.lib

我假设“120”是指VisualStudio的版本?如何让CMake找到vc120文件?

1 个答案:

答案 0 :(得分:3)

称为Boost_COMPILER的鲜为人知的变量就是解决方案。所以在我的情况下,要强制CMake寻找vc120而不是默认的vc140,我必须像这样运行cmake:

>cmake -DCMAKE_BUILD_TYPE=Release -DBoost_COMPILER=-vc120 -DBOOST_ROOT=C:\boost_1_58_0 -DBOOST_LIBRARYDIR=C:\boost_1_58_0\lib64-msvc-12.0 -G "Visual Studio 14" ..