私の質問は簡単です、私はルールから製品のファイル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];
}
}
}
: は、ここではモジュールコードです。
投稿を編集し、さらに情報を追加しました。 –
私はまだ生成されたファイルをファイルリストに表示する理由を理解していません。あなたのソースに(まだ生成されていないかもしれない)ヘッダーファイルを単純にインクルードして使用することができます。実際にプロジェクトに追加する(つまり、リポジトリにチェックインする)場合は、手動でプロジェクトファイルに追加して(.repファイルを削除する)必要があります。しかし、私はこれがあなたがしたいことではないという疑いを持っています。 –
OK、ヘッダーファイルがプロジェクトファイルリストに表示されない場合は、qtcreatorコードの補完や解析に影響しません。実際にはい、それを手で追加してgitリポジトリにチェックインします。 –