Qt 为什么QB忽视我的规则?

Qt 为什么QB忽视我的规则?,qt,qbs,Qt,Qbs,我有这个简单的代码 import qbs Project { name: "simple_test" Product { name: "micro" type: "other" Group { files: '*.q' fileTags: ['qfile'] } Rule { id: check1 inputs: ["qfile"] prepare: {

我有这个简单的代码

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;
        }
    }
}
}
然后放入两个文件blink.q和blink1.q

通过文档,我必须在“编译输出”窗口中看到3行:两行 “QFile Passing”和一个带有“QFile transformer”


但我看到只有变压器块是工作的(根本没有“QFile传递”);(我的规则有什么问题?

您的规则必须实际生成一些工件,并且产品的类型必须以某种方式(直接或间接)取决于您规则的输出工件的文件标记。换句话说,任何东西都不依赖于规则的输出,因此该规则未被执行

可能您需要的是以下内容:

导入qbs
计划{
名称:“简单测试”
产品{
名称:“微”
类型:[“其他”,“已处理文件”]
团体{
文件:'*.q'
文件标签:['qfile']
}
统治{
身份证号码:check1
输入:[“qfile”]
人工制品{
文件路径:“已处理的_qfile.txt”
文件标签:“已处理的文件”
}
准备:{
var cmd=新的JavaScriptCommand();
cmd.description=“QFile传递”
cmd.silent=false;
cmd.highlight=“编译器”;
cmd.sourceCode=函数(){
打印(“无事可做”);
};
返回cmd;
}
}
}
}
注意增加了:

  • check1
    规则中的工件项,描述将由该规则生成的输出文件
  • processed_qfile
    添加到产品类型中,在依赖关系树中创建连接,并在生成产品时执行规则