0

特定の種類のプロジェクト用に boost-build で使用される .jam ファイルを編集する必要があります。BJAM 言語の公式マニュアルには次のように書かれています。

  1. DEF ファイルを扱うツールセットの 1 つに msvc があります。次の行を追加する必要があります。フラグ msvc.link DEF_FILE ;
  2. DEF_FILE 変数は msvc.link アクションでは使用されないため、次のように変更する必要があります。 actions link bind DEF_FILE { $(.LD) .... /DEF:$(DEF_FILE) .... } DEF_FILE 部分をバインドします。DEF_FILE の内部ターゲット名をリンク内の対応するファイル名に変換するように bjam に指示します。

したがって、どうやら DEF_FILE を ECHO で印刷するだけではうまくいきません。文字列変数または実際にチェックできるものにどのように展開できますか?

フラグが設定されていない場合は、エラー メッセージを出力してビルドを中止する必要があります。私は試した:

if ! $(DEF_FILE)
{
    errors.user-error "file not found" ;
    EXIT ;
}

しかし、この「もし」は常に真です

また、含まれている「アクション」内に「if ! $_DEF_FILE {...}」を入れてみましたが、明らかに無視されます。

4

1 に答える 1

1

私はあなたが持っているグローバルなタスクを理解しているかどうかわかりません。ただし、空でないDEF_FILEのチェックを追加する場合は、引用するドキュメントビットを拡張して、msvc.link関数にチェックを追加する必要があります。

コマンドラインパターン(「actions」で指定)がある場合、その内容は実行のためにOSに渡されるものです。ただし、アクションを生成する前に呼び出される同じ名前の関数を使用することもできます。たとえば、現在のコードベースには次のものがあります。

rule link.dll ( targets + : sources * : properties * )
{
    DEPENDS $(<) : [ on $(<) return $(DEF_FILE) ] ;
    if <embed-manifest>on in $(properties)
    {
        msvc.manifest.dll $(targets) : $(sources) : $(properties) ;
    }
}

このコードを次のように追加で変更できます。

if ! [ on $(<) return $(DEF_FILE) ] {
       ECHO "error" ;
}
于 2012-07-28T04:57:57.693 に答える