作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试过阅读文档,但它相当难以理解,所以我希望有人可能有一个简单的答案。我想基于“调试”定义一个新的“变体”,它只是向编译器命令行添加一些宏定义,例如“-DSOMEMACRO”。我想我可以将其作为调试的“子变体”来执行,或者只是定义一个新的变体复制“调试”,但我什至不确定在哪里执行此操作。看起来 $BOOST_BUILD_DIR/build 中的 feature.jam 可能就是这个地方。也许我真正想要的只是一个新的“功能”,但我仍然不清楚我需要做什么以及在哪里做,而且我不知道“功能”是否允许我将构建产品定向到不同的目录到“调试”构建。
任何建议将不胜感激。 (如果您想知道,我必须使用 bjam,因为它已被采纳为我们的企业标准。)
最佳答案
我不太确定你想要什么,但有很多可能性。
A. 您总是希望使用定义的 SOMEMACRO 宏进行编译。在这种情况下,在您的项目的 Jamfile 中添加
project
: requirements # These are requirements for this project
# If compiling debug, define SOMEMACRO
<variant>debug:<define>SOMEMACRO
: usage-requirements
# These are requirements projects using this project must have
<variant>debug:<define>SOMEMACRO
;
<variant>debug:
健康)状况。如果您需要设置其他标志,您可以使用
<cflags>
,
<cxxflags>
, 和
<linkflags>
作为适当的。
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
feature.feature
rule 定义了一个名为
<steves-feature>
的特性有两个可能的值和三个属性。
composite
表示它是由其他功能组成的功能(在本例中为
<define>SOMEMACRO
)。
propagated
意味着包含具有此功能集的目标的任何目标也将具有此功能集。和
link-incompatible
表示带有
<steves-feature>on
的目标不能与带有
<steves-feature>off
的目标结合使用. (因此,如果任何目标设置了此功能,bjam 会将创建的文件放在名为
steves-feature-on
或
steves-feature-off
的目录下。)
<define>
一样使用上一节中项目规则中使用的功能。 (您甚至可以将其添加到项目规则的
default-build
部分。)
bjam steves-feature=on
.
variant steves-debug : debug : <steves-feature>on ;
debug
相同变体,但具有附加功能
<steves-feature>on
.
variant
规则,所以它可能需要从某个地方导入。此外,你可能能够做到
variant steves-debug : debug : <define>SOMEMACRO ;
关于bjam - 如何在 bjam 中创建新变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715106/
我是一名优秀的程序员,十分优秀!