7

私はドキュメントを読んでみましたが、それはかなり不可解なので、誰かが簡単な答えを持っていることを願っています。'debug'に基づいて、新しい'variant'を定義したいと思います。これは、コンパイラのコマンドラインにいくつかのマクロ定義を追加するだけです(例: "-DSOMEMACRO")。私はこれをデバッグの「サブバリアント」として実行できるかもしれないと思います。あるいは、「デバッグ」をコピーする新しいバリアントを定義するだけかもしれませんが、これをどこで実行するかさえわかりません。$ BOOST_BUILD_DIR/buildのfeature.jamがその場所である可能性があります。おそらく私が本当に望んでいるのは単に新しい「機能」ですが、何をどこで行う必要があるのか​​はまだはっきりしていません。また、「機能」によってビルド製品を別のディレクトリに転送できるかどうかもわかりません。 'debug'ビルドに。

任意の提案をいただければ幸いです。(ご参考までに、企業標準として採用されているbjamを使用する必要があります。)

4

1 に答える 1

7

あなたが何を望んでいるのかよくわかりませんが、いくつかの可能性があります。

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 がディレクトリ構造を作成するかどうかはわかりません。(きっとそうなります。)

于 2010-04-26T18:01:38.110 に答える