【问题标题】:How to build and link Boost.Serialization on MacOS如何在 MacOS 上构建和链接 Boost.Serialization
【发布时间】:2021-03-09 19:50:02
【问题描述】:

我正在使用 Boost 在 C++ 中构建一个客户端-服务器应用程序,我的一位同事正在 Ubuntu 中编写服务器代码,他正在使用 Boost.Serialization 但我无法运行它,因为它找不到那个库,除此之外,我还需要客户的图书馆。为了构建并将其链接到项目,他只创建了一个像这样的 CMAKE 文件:

cmake_minimum_required(VERSION 3.16)
project(RemoteBackup_Server)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "-pthread" )

add_executable(RemoteBackup_Server User.cpp main.cpp server.cpp server.h connection_handler.cpp connection_handler.h)


find_package(Boost REQUIRED COMPONENTS serialization filesystem)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(RemoteBackup_Server ${Boost_LIBRARIES})

它可以毫不费力地编译和链接库。 我正在使用 MacOS,我已经使用 Homebrew 安装了 Boost,并且我尝试按照 Boost 官方网站中的指南进行操作:https://www.boost.org/doc/libs/1_74_0/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary 但我没有bootstrap.shb2(指南中提到的命令)来构建库,我在互联网上到处搜索,但仍然不知道如何继续。有什么帮助吗?

【问题讨论】:

  • 说明中列出的第一个命令是cd。你没有这个命令?
  • 我询问cd 的一个原因是因为我怀疑您的问题描述可能更准确。另一个原因是其他命令(bootstrap.shb2)是 Boost 安装的一部分...您到底尝试了什么,结果到底是什么?
  • 当然我有cd,但我没有bootstrap.shb2,这让我认为也许 Homebrew 没有安装有关 Boost 的所有内容。我无法尝试任何东西,因为我无法继续使用该指南,而且我还没有找到其他合适的东西。
  • 您说“当然”,但您的帖子可能会被阅读以提出其他建议。 在帖子本身中包含所有相关细节是很好的。这使得回答问题的人和其他有相同问题的人都更容易。 (想想看,你在网上到处搜索的时候,你是搜索“the commands it says”还是“bootstrap.sh”?下一个人会怎么做?如果找不到您的问题,请从您的经验中受益?)我冒昧地更新了您的问题。
  • 说到搜索:Link errors using Homebrew's Boost::Log in OSX El Capitan。您可能不需要构建库。再说一次,这个答案已经超过 4 年了。

标签: c++ serialization boost


【解决方案1】:

不幸的是,Homebrew 似乎只安装了 Boost 的头库。对我来说,安装所有内容的最简单方法是从他们的网站下载完整的 Boost 存档,然后按照此处https://www.boost.org/doc/libs/1_74_0/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary 的说明进行操作,然后将它们链接到 CMAKE 文件中,如下所示:

set(Boost_INCLUDE_DIR prefix/include)
set(Boost_LIBRARY_DIR prefix/lib)
find_package(Boost COMPONENTS libraries_needed REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
target_link_libraries(Project_Name ${Boost_LIBRARIES})

在哪里: prefix 是您在使用./bootstrap.sh 时使用--prefix 标志指定的安装路径, libraries_needed 是您需要的库列表,以空格分隔,例如filesystem serializationProject_Name 是您的项目名称,在 CMAKE 文件中的 project() 命令中指定。

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 2021-06-10
    • 1970-01-01
    • 2023-03-09
    • 2022-06-23
    • 2021-04-24
    • 2018-06-13
    • 2021-03-29
    • 2022-01-04
    相关资源
    最近更新 更多