在jam文件中指定Boost.build内置功能
Specifying Boost.build built-in features in jam-file
如何在用于构建Boost库的jam文件(user-config.jam)中指定Boost.build内置功能?例如,我可以使用VS命令提示符中的b2来使用构建boost
b2 link=shared threading=multi address-model=64
我需要通过.cam配置启用相同的功能。
我知道Boost.build系统可能使用本地目录中的user-config.jam,但我对语法感到困惑。我试过这个:
using msvc : 11.0;
<address-model>64;
但这似乎不会影响构建过程。
简而言之,你不应该这么做。工具集配置并不意味着将特性(如<address-model>
)硬编码到使用该工具集构建的所有目标。正确的方法是在所有正在构建的主要目标上设置此功能。
exe myexe : a.cpp : <address-model>64 ;
这也可以通过在项目目标上设置特征值来实现。
project my-project : requirements <address-model>64 ;
# Same as above, project requirements are applied to
# all targets in the project.
exe myexe : a.cpp ;
这本质上就是Boost.Build对命令行上指定的功能所做的。它们被解析并作为需求应用于所有顶级目标。
如果你真的想使用user-config.jam
来确保所有目标都有<address-model>64
,你可以使用以下技巧:
# In user-config.jam
import feature
feature.feature build-64 : on : composite ;
feature.compose <build-64>on : <address-model>64 ;
这定义了一个新功能。此功能不是可选的,因此Boost.Build将在所有正在构建的目标上使用它。默认值是第一个(也是唯一一个)("on"),它是一个指定<address-model>64
的组合,因此它适用于每个目标。
在构建Boost时,你可以使用user-config.jam重写命令行。如果你需要指定要构建哪些库,我相信这是唯一的方法。
# Un user-config.jam
local argv = [ modules.peek : ARGV ] ;
ECHO Old command line is '$(argv)' ;
modules.poke : ARGV : $(argv) --with-thread address-model=64 ;
argv = [ modules.peek : ARGV ] ;
ECHO New command line is '$(argv)' ;
但是,首先使用shell脚本传递正确的命令行似乎更合适,而不是在user-config.jam
中重写它。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何使用ndk-build.cmd构建Android.so文件
- cmake如何在fedora工作站中找到boost静态库包
- Build Boost Regex for Windows VS2013
- Build Boost Coroutine2
- 如何为这个Boost.BUILD Jamfile编写一个Bazel BUILD文件
- 如何将 boost.build 项目链接到特定的静态库
- CMAKE:复制 Boost-Build 的"build everything in Jamfile"行为?
- 使用 Boost.build 构建并针对 boost 进行链接
- boost.build Vs boost.python
- 替换 Boost Build v2 中的编译器
- Boost.Build/bjam and Qt
- 如何在Windows上安装Boost.Build
- 在jam文件中指定Boost.build内置功能
- 使用MinGW-w64和Boost.Build的C++构建环境
- Build Boost C++ WinCE
- 有关boost.log和boost.build(bjam)别名、构建和包含在目标中的帮助
- Boost-Build:从linux构建windows可执行文件