我正在编写一个C ++程序,我想使用Boost的一些功能(不仅仅是标题模块),而是我以源代码形式分发。我希望它能够在尽可能多的操作系统上运行,但是为了具体而采用Linux。 (我更习惯于Windows,但只要Boost适合静态链接,我就可以放弃运送二进制文件。)
现在,我正在发送一个简单的手写makefile,因此编译程序的过程只是make
。但是,我已经明白,当你将Boost引入等式时,这不再有效,因为你无法知道用户机器上可用的版本(如果有的话),或者头文件和库文件的位置而且应该使用构建系统,如autotools或CMake。
这是对的吗?如果是这样,如果最高优先级是可靠性,那么应该使用哪个构建系统(即最大化当用户尝试编译和安装程序时它将起作用的可能性)?
(我也计划使用GMP,如果这有所不同。)
答案 0 :(得分: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})