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文件?
答案 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" ..