9

一部のプロジェクトでは、.pro ファイルで構成されたビルド前のステップを使用しています。したがってqmake、アクティブ化されるたびにこのステップが実行されます。

QtCreator でビルドすると (プロジェクト全体を完全に再ビルドするときも)、常に実行されるとは限りませんqmake。.pro ファイルが変更された場合にのみ実行されるため、いくつかの問題が発生します。

また、よくある問題は、そのファイルで qmake を実行した後にQObject を継承するクラスを作成すると、それが認識されず、そのファイルで実行されないmocことです。このような問題はqmake、QtCreator の [ビルド] メニューから手動で実行するだけで解決されます。しかし、これを忘れると、これが原因で発生するコンパイルエラーに混乱することがあり、これは本当に面倒です。

(どのように) プロジェクトをビルドするときに QtCreator に常にこのステップを実行させることができますか?

プロジェクト構成のビルドステップとして qmake を追加することを考えましたが、これはこの問題を解決するための汚いハックのようです。

4

4 に答える 4

11

別の汚いハックですが、もう少し柔軟です。Linux/Mac では、ビルド ステップとして「touch yourprojectfile.pro」を追加するか、外部ツール呼び出しを sth に割り当てます。touch "*.pro" のように、現在のプロジェクトの作業ディレクトリで実行します。pro ファイルが変更されると (これは touch によって模倣されます)、qmake が実行されます。あまりきれいではありませんが、外部ツールとホットキー ソリューションは、各プロジェクトのビルドステップに qmake を追加するよりも柔軟です。

更新:これに対する完全に満足のいく解決策をついに見つけました。pro ファイルに以下を追加します。

  qmakeforce.target = dummy
  qmakeforce.commands = rm -f Makefile ##to force rerun of qmake
  qmakeforce.depends = FORCE
  PRE_TARGETDEPS += $$qmakeforce.target
  QMAKE_EXTRA_TARGETS += qmakeforce

これにより、生成された Makefile が削除され、ビルドごとに qmake が強制的に再実行されます。

于 2014-01-01T21:55:13.073 に答える
1

QtCreator をカスタマイズするのが最善の方法だと思います。これは、QtCreator のプラグインを作成するか、Qt4ProjectManager という名前のプラグインのソース コードを変更して、自分でビルドすることで実行できます。これは複雑かもしれませんが、解決策になる可能性があります。

于 2013-02-28T04:59:02.897 に答える