我使用Visual Studio 2012 x64構建了boost 1.54.0。CMake,VS2012和Boost 1.54.0:libboost_filesystem-vc110-mt-gd-1_54.lib丟失
我試圖建立一個使用升壓文件系統的一個小的演示:
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout << "Usage: tut1 path\n";
return 1;
}
std::cout << argv[1] << " " << file_size(argv[1]) << '\n';
return 0;
}
CMake的用於安裝的VS2012 x64的相應的項目:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
PROJECT(FilesystemTest)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/build/)
# Visual Studio 2010 Pro Standard: /DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR
SET(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS /W4 /Zi /EHsc /GR- /MP /openmp")
SET(CMAKE_DEBUG_POSTFIX "d")
FIND_PACKAGE(Boost COMPONENTS filesystem system REQUIRED)
# Unicode rules!
ADD_DEFINITIONS(-D_UNICODE)
include_directories(${Boost_INCLUDE_DIR})
LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS})
file(GLOB FilesystemTest_SOURCES src/*.*)
# Create a target for the library
ADD_EXECUTABLE(FilesystemTest
${FilesystemTest_SOURCES})
但在編譯的時候,我得到「libboost_filesystem -vc110-mt-gd-1_54.lib'缺失。
很明顯我使用了boost 1.53.0 - 當使用boost 1.53.0時,一切都很完美。
當尋找到提升1.54 lib文件夾中只有一個 'boost_filesystem-vc110-MT-GD-1_54.lib' 和
我編 'libboost_filesystem-vc110-MT-SGD-1_54.lib'提高使用此指令:從http://www.boost.org/
- 下載升壓1.54.0(如「C:\第三方\ vs2013 \ 64 \ boost_1_54_0」)
- 啓動Visual Studio 2012的x64命令提示符
- 更改爲提升目錄(例如「CD C:\第三方\ VS2010 \ 64 \ boost_1_54_0」。)
- 執行\ bootstrap.bat
- 執行B2地址模型= 64工具箱= MSVC-11.0 --build型=完全階段
如果只有某些庫(例如文件系統)都需要6步可以通過這個來代替:
b2 address-model=64 toolset=msvc-11.0 --build-type=complete stage --with-filesystem --with-signals --with-system
我無法弄清楚什麼是工作錯誤。有任何想法嗎?
更新 昨天我又試了一次:我用同樣的命令,我終於拿到了 'libboost_filesystem-vc110-MT-GD-1_54.lib' 文件。不知道爲什麼它現在工作。我安裝了一些VS2012更新,並刪除了我的VS2013預覽版安裝。但我不知道爲什麼它現在工作。
@drescherjm我相應地更改了boost構建指令 – Vertexwahn
除了我在幾個小時前發佈的評論以及從更新構建指令後刪除的評論之外,我似乎正在爲boost 1.53.0構建相同的方法(我還沒有移動到1.54 yet):「x:/Other/Libraries/boost_1_53_0/bjam.exe -j%NUMBER_OF_PROCESSORS%--without-python --without-mpi address-model = 64 --build-dir = x:/x64.2/ VC.110/Libraries/Boost-1.53.0/build --prefix = x:/x64.2/VC.110/Libraries/Boost-1.53.0 --toolset = msvc-11.0 --build-type = complete stage安裝「 – drescherjm
我想我可以通過在find_package(boosr)調用之前定義ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK)或SET(Boost_USE_STATIC_LIBS OFF)來解決這個問題。 – languitar