3

私はこの単純なコードを持っています

import qbs

Project {
name: "simple_test"

Product {
    name: "micro"
    type: "other"
    Group {
        files: '*.q'
        fileTags: ['qfile']
    }

    Rule {
        id: check1
        inputs: ["qfile"]
        prepare: {
            var cmd = new JavaScriptCommand();
            cmd.description = "QFile passing"
            cmd.silent = false;
            cmd.highlight = "compiler";
            cmd.sourceCode = function() {
                print("Nothing to do");
            };
            return cmd;
        }
    }
    Transformer {
        inputs: ['blink.q']
        Artifact {
            filePath: "processed_qfile.txt"
            fileTags: "processed_qfile"
        }
        prepare: {
            var cmd = new JavaScriptCommand();
            cmd.description = "QFile transformer";
            cmd.highlight = "compiler";
            cmd.sourceCode = function() {
                print("Another nothing");
            };
            return cmd;
        }
    }
}
}

そして、2つのファイルblink.qとblink1.qを入れます

ドキュメンテーションでは、「コンパイル出力」ウィンドウに 3 行表示する必要があります。

しかし、Transformer ブロックのみが機能していることがわかります (「QFile Passing」はまったくありません) ;( 私のルールの何が問題なのですか?

4

1 に答える 1

2

ルールは実際にいくつかのアーティファクトを生成する必要があり、製品のタイプは何らかの方法で (直接または間接的に) ルールの出力アーティファクトのファイル タグに依存する必要があります。つまり、ルールの出力には何も依存しないため、ルールは実行されませんでした。

おそらくあなたが望むものは次のとおりです:

import qbs

Project {
    name: "simple_test"

    Product {
        name: "micro"
        type: ["other", "processed_qfile"]
        Group {
            files: '*.q'
            fileTags: ['qfile']
        }

        Rule {
            id: check1
            inputs: ["qfile"]
            Artifact {
                filePath: "processed_qfile.txt"
                fileTags: "processed_qfile"
            }
            prepare: {
                var cmd = new JavaScriptCommand();
                cmd.description = "QFile passing"
                cmd.silent = false;
                cmd.highlight = "compiler";
                cmd.sourceCode = function() {
                    print("Nothing to do");
                };
                return cmd;
            }
        }
    }
}

次の追加に注意してください。

  • check1ルールによって生成される出力ファイルを記述するルール内のアーティファクト アイテム。
  • 製品のタイプに を追加processed_qfileして、依存関係ツリーに接続を作成し、製品のビルド時にルールが実行されるようにします。
于 2015-05-21T02:49:24.747 に答える