2017-07-13 1 views
0

私の質問は簡単です、私はルールから製品のファイルstringListを操作したいと思います。私はproduct.files.push(file)、product.files.append(file)を使用しようとしましたが、いずれの解決策も私のために働いていませんでした。製品のファイルコレクションにファイルを追加

ご協力いただきありがとうございます。

EDIT: 私はrepc(QtRemoteObjects .REPファイルコンパイラ)を呼び出すモジュールを作成し、このコンパイラは、入力として.REPファイルを取り、.hファイルを生成します。生成された.hファイルをプロジェクトに含める必要があります。そのため、定義されている型から継承できます。私は自動的にこの.Hを追加する方法は、QBSプロジェクトにファイルを生成したい理由です

import qbs 
import qbs.FileInfo 
import qbs.File 

Module { 
    property bool source: true 
    FileTagger { 
     patterns: ["*.rep"] 
     fileTags: ["repc-rep"] 
    } 
    Rule { 
     inputs: ["repc-rep"] 
     Artifact { 
      filePath: { 
       if (product.repc.source) { 
        return "repc_" + FileInfo.baseName(input.fileName) + "_source.h"; 
       } else { 
        return "repc_" + FileInfo.baseName(input.fileName) + "_replica.h"; 
       } 
      } 
      fileTags: ["hpp"] 
     } 
     prepare: { 
      var cmd = new Command(); 
      cmd.description = "repc " + input.fileName; 
      cmd.program = "repc.exe" 
      if (product.repc.source) { 
       cmd.arguments = ["-i", "rep", "-o", "source", input.filePath, output.filePath]; 
      } else { 
       cmd.arguments = ["-i", "rep", "-o", "replica", input.filePath, output.filePath]; 
      } 
      var cmd2 = new JavaScriptCommand(); 
      cmd2.silent = true; 
      cmd2.sourceCode = function() { 
       File.copy(output.filePath, FileInfo.path(input.filePath) + "/" + output.fileName); 
      } 
      return [cmd, cmd2]; 
     } 
    } 
} 

: は、ここではモジュールコードです。

答えて

1

あなたはできません。するべきではありません。 filesプロパティにはソースファイルが含まれています。ルールが作成するすべてのものは、定義上ソースファイルではありません。あなたが達成しようとしていることを説明してください。それを正しく行う方法を提案することができます。

+0

投稿を編集し、さらに情報を追加しました。 –

+0

私はまだ生成されたファイルをファイルリストに表示する理由を理解していません。あなたのソースに(まだ生成されていないかもしれない)ヘッダーファイルを単純にインクルードして使用することができます。実際にプロジェクトに追加する(つまり、リポジトリにチェックインする)場合は、手動でプロジェクトファイルに追加して(.repファイルを削除する)必要があります。しかし、私はこれがあなたがしたいことではないという疑いを持っています。 –

+0

OK、ヘッダーファイルがプロジェクトファイルリストに表示されない場合は、qtcreatorコードの補完や解析に影響しません。実際にはい、それを手で追加してgitリポジトリにチェックインします。 –

関連する問題