2015-05-31 59 views
2

CMake正在尋找與我安裝的不同的boost文件,並且我不知道如何解決它。我使用的是64位Windows 7,VisualStudio Community 2015,並使用最新的64位版本Boost boost_1_58_0-msvc-12.0-64.exe在Windows上獲取CMake以查找vc120 Boost庫

我的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 

我assumi ng「120」是指VisualStudio的版本?我如何讓CMake找到vc120文件?

回答

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" .. 
+0

我不知道這是如何工作的好 - 你將要構建自己的代碼使用VC14,但鏈接與VC12構建的Boost庫。只需下載Boost源並使用VC14構建所需的庫就可能更安全? – Fraser

+0

最後,我放棄了並回到早期版本的Visual Studio。在預發佈VS 2015中編譯一些模板代碼時遇到問題。所以我不知道@Fraser是否正確,最終會導致問題。 –