【问题标题】:CMake, VS2012 and Boost 1.54.0: libboost_filesystem-vc110-mt-gd-1_54.lib missingCMake、VS2012 和 Boost 1.54.0:缺少 libboost_filesystem-vc110-mt-gd-1_54.lib
【发布时间】:2013-07-02 11:32:09
【问题描述】:

我使用 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' is missing。

以前我使用 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/下载boost 1.54.0
  2. 解压文件(例如“C:\thirdparty\vs2013\x64\boost_1_54_0”)
  3. 启动 Visual Studio 2012 x64 命令提示符
  4. 更改为 boost 目录(例如“cd C:\thirdparty\vs2010\x64\boost_1_54_0”)
  5. 执行 .\bootstrap.bat
  6. 执行 b2 address-model=64 toolset=msvc-11.0 --build-type=complete 阶段

如果只需要某些库(例如文件系统),则可以将步骤 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 安装。但我不知道为什么它现在可以工作。

【问题讨论】:

  • @drescherjm 我相应地更改了 boost 构建说明
  • 除了我几个小时前发表的评论并删除了,因为你更新了构建说明,我似乎在构建 boost 1.53.0 的几乎相同的方式(我还没有移动到 1.54):“ 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=完成阶段安装"
  • 我想我可以通过在 find_package(boosr) 调用之前定义 ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK) 或 SET(Boost_USE_STATIC_LIBS OFF) 来解决这个问题。
  • 如果这不再是一个问题......也许你可以回答你自己的问题,所以这不会出现在“未回答的 CMake 问题”列表的顶部。这似乎更像是一个“为什么不促进构建正确的库”的问题,而不是一个 CMake 问题。如果您觉得没有必要回答自己的问题,或许可以删除 CMake 标记。

标签: visual-c++ boost cmake


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2018-04-07
    • 2015-09-17
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多