2015-05-20 3 views
3

Я есть это просто кодПочему qbs игнорирует мое правило?

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 трансформатором“

Но я вижу, что только трансформатор блок не работает (не„QFile Передача“вообще)? (что случилось с моим правилом

ответ

2

Вашего правило должно фактически произвести некоторый артефакт (s), а тип вашего продукта должен каким-то образом (прямо или косвенно) зависеть от файлов тегов выходных артефактов вашего правила. Другими словами, ничто не зависело от вывода вашего правила, поэтому правило не было выполнено.

Возможно, что вы хотите следующее:

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 к типу продукта, создать соединение в дереве зависимостей и вызывая правило будет выполняться, когда продукт построен

 Смежные вопросы

  • Нет связанных вопросов^_^