3

qmakeを使用してコンパイルする、多くのsobprojectsを持つマスタープロジェクトがあります。

サブプロジェクトでは、コンパイルの前にいくつかのファイル (いくつかのヘッダー ファイル) をコピーする必要があります。リンクの前後に操作を実行するコマンドを見たことがありますが、コンパイルを開始する前にシェル操作を実行できるかどうかを知りたいです。それらを参照することはできませんが、それらをコピーする必要があります (理由は聞かないでください。私のせいではありません :-( )。何か提案はありますか?

返信ありがとうございます。

4

3 に答える 3

3

ほぼ同じ質問 に対する私の最後の回答を参照してください。

Qtでプロジェクトをコンパイルした後、いくつかのファイルをビルドディレクトリにコピーします

唯一の違いは、ポイント 5 を変更することです。

POST_TARGETDEPS     += copyfiles ## copy files after source compilation

に:

PRE_TARGETDEPS     += copyfiles ## copy files before source compilation

qmakeを実行するときは、すべてのファイルがすでにファイルシステムに存在している必要があります

于 2013-11-07T12:44:39.740 に答える
1

QMAKE_EXTRA_COMPILERS および QMAKE_EXTRA_TARGETS 変数を注意深く使用することで、あなたがやりたいことを達成できると思います。Qt Labs の記事The Power of QMake では、適切な紹介が提供されています。追加コンパイラの「.commands」部分は、シェル コマンドを含む任意のコマンドにすることができます。

この電子メール交換で見つけたもう 1 つの提案は、「... mkspecs/features/*.prf を見てください。特に moc と uic のものを見てください。」他の可能な方法についてです。

于 2012-08-21T14:07:12.323 に答える
0

I also just played around with QMAKE_EXTRA_TARGETS to solve the question, but could not manage to get it done ;)

One other (simple) solution which might work for you is to wrap the call to gcc/g++: in the .pro file, set QMAKE_CXX=./g++Wrapper and in the g++Wrapper shell script, call the original compiler while doing anything you want before and after the call:

#!/bin/bash
DoWhateverYouWantBeforeCompilation
g++ $*
DoWhateverYouWantAfterCompilation

By evaluating the command line parameters, you could also restrict your actions to specific files.

于 2012-08-21T14:28:04.167 に答える