0
のQbs analogueには、system()
関数があります。この関数はコンパイル時に渡すコマンドを実行するだけです。問題は:それに類似しているのはqbs
ですか? QBS Rule
/Artifact
アプローチは異なる目的のために設計されており、qmake system()コマンド
のQbs analogueには、system()
関数があります。この関数はコンパイル時に渡すコマンドを実行するだけです。問題は:それに類似しているのはqbs
ですか? QBS Rule
/Artifact
アプローチは異なる目的のために設計されており、qmake system()コマンド
qmakeののシステム()関数はない実行がコンパイル時にコマンドないシンプルなユースケースにはあまりにも冗長であるが、異なる設定時、でています。
qmakeとqbsは根本的に異なる設計と機能を持つ2つの非常に異なるビルドシステムであり、qbsの冗長性は部分的にはqmakeが可能になるよりもはるかに強力な基本的なアーキテクチャの違いによるものですの。
つまり、qbsのおおまかなものは、Processサービスです。このサービスは、ルールのoutputArtifactsやスクリプトを準備したり、プロパティのバインディングの右側から呼び出すことができます(パフォーマンス上の理由から推奨されません)。
あなたのユースケースはなんですか?最初に間違ったメカニズムを探しているかもしれません...
"コンパイル時に実行するタスク/シェルスクリプトがあります"のようです。シンボリックリンクを作成したり、svnのバージョンをリクエストしたり、アプリを圧縮したり、何かを圧縮したりすることができます。 'Rule' /' Artifact'アプローチには必ずしもそうでない入力ファイルが必要です。また、コンパイルの前後でこのタスクを厳密に行うことが重要な場合もあります。 –
特定の使用例が重要です。コンパイルの前または後でタスクを実行する必要がある場合は、適切な依存関係を指定して、使用可能なメカニズムを使用して正しい時点でビルド・グラフにフックする必要があります。 system()の同等物は、提供されるはるかに優れたプリミティブの領域外でこの問題を解決する魔法の弾丸ではありません。タスク(ルール)*は常に入力を持ちます。あなたがそうでないと思うならば、ルールが呼び出されることを確実にするために、qbsソースファイル自体( 'inputs:[" qbs "]')を使うことができます。 –