CMake,VS2012和Boost 1.54.0:缺少libboost_filesystem-vc110-mt-gd-1_54.lib

时间:2013-07-02 11:32:10

标签: visual-c++ boost cmake

我使用Visual Studio 2012 x64构建了boost 1.54.0。

我尝试构建一个使用boost文件系统的小型演示:

#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时,一切都很完美。

在查看boost 1.54 lib文件夹时,只有'boost_filesystem-vc110-mt-gd-1_54.lib'和'libboost_filesystem-vc110-mt-sgd-1_54.lib'

我使用此说明编译了boost:

  1. http://www.boost.org/
  2. 下载boost 1.54.0
  3. 提取文件(例如“C:\ thirdparty \ vs2013 \ x64 \ boost_1_54_0”)
  4. 启动Visual Studio 2012 x64命令提示符
  5. 更改为提升目录(例如“cd C:\ thirdparty \ vs2010 \ x64 \ boost_1_54_0”)
  6. 执行。\ bootstrap.bat
  7. 执行b2 address-model = 64 toolset = msvc-11.0 --build-type = complete stage
  8. 如果只需要某些库(例如文件系统),则步骤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 Preview安装。但我不知道为什么它现在正在运作。

1 个答案:

答案 0 :(得分:1)

昨天我再次尝试:我使用了相同的命令,最后得到了一个'libboost_filesystem-vc110-mt-gd-1_54.lib'文件。不知道为什么它现在正在运作。我安装了一些VS2012更新,并删除了我的VS2013 Preview安装。但我不知道为什么它现在正在运作。