あなたが何を望んでいるのかよくわかりませんが、いくつかの可能性があります。
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
;
SOMEMACRO を常に定義する必要がある場合は、<variant>debug:
条件を削除できます。他のフラグを設定する必要がある場合は、必要に応じて<cflags>
、<cxxflags>
、および<linkflags>
を使用できます。
B.フラグ/定義をオンにするためのクイックスイッチが必要であり、おそらくデフォルトで、おそらくオフであり、オンのビルドはオフのビルドと互換性がありません。その場合、機能が必要です。
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
feature.feature
ルールは、2 つの可能な値と 3 つのプロパティで呼び出される機能を定義します<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
.
C. 完全なバリアントが必要な場合。アイデアは、一緒に設定する必要があるさまざまな機能を備えたいくつかの一般的なビルド構成がある場合だと思います。上記の機能を既に作成している場合、これは簡単です。
variant steves-debug : debug : <steves-feature>on ;
このバリアントはバリアントと同じdebug
ですが、機能が追加されています<steves-feature>on
。
私はvariant
ルールを使用したことがないので、どこかからインポートする必要があるかもしれません。また、あなたはできるかもしれません
variant steves-debug : debug : <define>SOMEMACRO ;
しかし、bjam がディレクトリ構造を作成するかどうかはわかりません。(きっとそうなります。)