0

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

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

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

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

4

1 回答 1

3

在 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})
于 2012-08-23T07:59:23.517 回答