如何基于Jam构建系统构建从Git克隆的单个Boost program_options库
解决Boost program_options库的构建与测试问题
首先得纠正一个关键误区:你用apt-get install jam装的是传统的Jam工具,但Boost用的是Boost.Build(曾用名bjam,现在叫b2),这俩不是一回事,所以普通Jam肯定没法处理Boost的Jamfile.v2。下面一步步帮你解决问题:
1. 获取正确的Boost.Build工具(b2)
有两种简单方式:
- 方式一:用本地Boost发行版的b2
如果你的系统已经通过apt安装了libboost-all-dev或者boost-build包,直接在终端输入b2试试——大概率已经可用。如果提示找不到,检查下路径,一般会在/usr/bin/b2或者/usr/local/bin/b2。 - 方式二:从Boost源码获取独立的b2
如果你不想装完整的Boost发行版,可以单独克隆Boost.Build的源码,然后编译出b2:git clone https://github.com/boostorg/build.git cd build ./bootstrap.sh ./b2 install --prefix=/usr/local # 安装到系统路径,方便全局调用
2. 构建program_options库
进入你克隆的program_options库根目录(就是包含build/Jamfile.v2的上级目录),直接运行b2命令即可:
# 构建调试版和发行版的库 b2 variant=debug,release link=shared,static
variant=debug,release:同时构建调试和发行版本link=shared,static:同时构建动态库和静态库
如果只需要其中一种,比如只构建发行版动态库,就用b2 variant=release link=shared。
构建完成后,库文件会生成在bin.v2目录下,或者你可以用--prefix参数指定安装路径:
b2 install --prefix=/path/to/your/install/dir
3. 运行测试用例
要运行program_options的测试,直接在库目录下执行:
b2 test
Boost.Build会自动编译并运行所有测试用例,输出测试结果。如果想单独跑某个测试,可以指定测试目标,比如:
b2 test/test_option
4. 是否需要最新开发版Boost?
不需要强制用最新开发版!只要你本地的Boost发行版版本和你克隆的program_options库版本兼容匹配就行。比如:
- 如果你克隆的是Boost 1.83分支的program_options,本地装的Boost 1.83发行版完全没问题;
- 如果本地Boost版本比克隆的库版本旧,可能会出现头文件不兼容、API变更的问题;
- 反过来,如果本地版本更新,大概率也能兼容,但最好还是保持版本一致更稳妥。
如果想用本地的Boost发行版来构建克隆的库,确保b2能找到本地Boost的头文件和配置——一般来说,只要本地Boost是通过包管理器安装的,b2会自动识别;如果是手动编译的Boost,可能需要设置BOOST_ROOT环境变量:
export BOOST_ROOT=/path/to/your/local/boost b2
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

