【问题标题】:Distributing and compiling a C++ program with Boost使用 Boost 分发和编译 C++ 程序
【发布时间】:2012-08-17 22:34:03
【问题描述】:

我正在编写一个 C++ 程序,我想使用 Boost 中的一些功能(不仅仅是标头模块),并且我正在以源代码形式分发它。我希望它可以在尽可能多的操作系统上运行,但为了具体起见,请使用 Linux。 (我更习惯于 Windows,但只要 Boost 支持静态链接,我就可以依赖于发布二进制文件。)

现在,我正在发布一个简单的手写makefile,所以编译程序的过程就是make。但是,当您将 Boost 带入方程式时,我知道这不再有效,因为您无法知道用户机器上可用的版本(如果有),或者头文件和库文件的位置,而应该使用诸如 autotools 或 CMake 之类的构建系统。

这是正确的吗?如果是这样,如果最高优先级是可靠性(即当用户尝试编译和安装程序时,最大限度地提高其工作的可能性),应该使用哪个构建系统?

(我也打算使用 GMP,如果这有影响的话。)

【问题讨论】:

  • 我无法回答你的问题,因为我不懂很多工具。但我知道 cmake,我可以告诉你 CMake 会满足你的需要,但我不能告诉你这个工具是否会“最大化概率”。
  • 我建议你也使用 CMake。

标签: boost build cmake autotools


【解决方案1】:

在 CMake 中静态编译使用 Boost 的程序非常简单。使用FindBoost 模块为您处理。

一个静态使用 program_options 的程序的示例 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8)
project(myproj)

set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.40 REQUIRED COMPONENTS program_options)
include_directories(${Boost_INCLUDE_DIRS})

add_executable(myexe source_file.cpp)
target_link_libraries(myexe ${Boost_LIBRARIES})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2021-10-04
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多