2015-07-24 2 views
0

J'ai l'habitude de travailler avec Makefiles mais mon projet actuel utilise des fichiers .qbs. Comment exécuter une commande de terminal simple via qbs sans créer ou exiger des fichiers? Similaire à une règle bidon en make.Qbs: Comment exécuter une commande de terminal simple?

Ce qui suit fonctionne et montre "génial" dans mon terminal.

import qbs 1.0 

Project { 
    name: "cli" 

    Product { 
     name: "helloworld" 
     type: "application" 
     files: "TEST.c" 
     Depends { name: "cpp" } 
    } 

    Product { 

     type: ["custom-image"] 
     Depends { name: "helloworld" } 

     Rule { 
      inputsFromDependencies: ["application"] 
      Artifact { 
       fileTags: ["custom-image"] 
      } 
      prepare: { 
       var cmd = new Command("echo", "awesome") 
       return cmd 
      } 
     } 
    } 
} 

Cependant, je dois toucher mon dossier TEST.c factice avant chaque course. Sans la dépendance helloworld, la règle ne s'exécute pas.

Des idées? Merci beaucoup!

Répondre

0

Il est enterré dans la documentation dans un endroit très non évident et plus obscurci par la commande (ce qui n'est pas la bonne façon, lol). J'ai aussi eu ton problème.

Qu'est-ce que vous avez besoin est ceci: http://doc.qt.io/qbs/jsextension-process.html

0

Je ne suis pas sûr de ce que votre objectif final est que vous pouvez utiliser Transformer{} au lieu d'un Rule{}. La plus grande différence entre un Rule{} et un Transformer{} est que vous n'avez pas besoin d'entrées pour que le Transformer{} s'exécute.

Voir également la propriété Transformer.alwaysRun.

https://doc.qt.io/qbs/transformer-item.html