12

私は qmake を使って Makefile を生成しましたが、うまくいきました。ただし、生成された Makefile を編集せずに、生成された Makefile にさらに内容を追加したい場合があります。

ソース コードの横に Doxygen ディレクトリがあり、そこでドキュメントを生成するためにいくつかの doxygen コマンドを実行する必要があるとします。したがって、これをメインの Makefile のターゲットとして持つとよいでしょう。しかし、デフォルトでは、qmake はこの種の余分なものを理解していません。

それで、「doxygen」ディレクトリにセカンダリMakefileを含めるようにqmakeに指示する何かを追加したり、qmake構成に「追加のターゲット」を直接追加したりできますか?


たぶん次のようなもの:

4

4 に答える 4

8

これは古い質問ですが、とにかく回答を追加します。

qmake ではカスタム ルールが一般的にサポートされていないようですが、GNU make を想定した簡単な方法があります。makefile (すべて小文字) というファイルを作成するだけです。

include Makefile

re: clean
        $(MAKE) all

最後の 2 行はカスタム ルールです。

GNU make は、両方が存在する場合、Makefile ではなく Makefile を使用します。

ところで、re ルールは「make -j8 clean all」で問題を解決します。このコマンドは、クリーンの実行が完了する前にすべての実行を開始します。re ルールは連続性を保証します。

于 2012-10-28T19:02:02.853 に答える
8

私はこれと同じ問題に取り組んでいますが、これまでのところ、 QMAKE_EXTRA_TARGETS 変数を使用して docs ターゲットを次のように構築することに成功しました。

docs.depends = $(SOURCES)
docs.commands = (cat Doxyfile; echo "INPUT = $?") | doxygen -
QMAKE_EXTRA_TARGETS += docs

ここで、Doxyfile には基本的な doxygen 構成設定から INPUT シンボルを差し引いたものがあり、これを「echo」を介して追加して、$(SOURCES) に満たされていない Makefile 依存関係のみを含めます。

このアプローチは、変更されたソースファイルのドキュメントのみを再作成するという点でうまくいくようですが、私のqmakeプロジェクトファイルがdebug_and_release CONFIGオプションでビルドされ、Makefile、Makefile.Debug、およびMakefile.Release ですが、SOURCES はデバッグおよびリリース Makefile でのみ定義されているため、ドキュメントをビルドするためmake -f Makefile.Debug docsのよりシンプルで直感的な方法ではなく、明示的に行う必要があります。make docs

この QMAKE_EXTRA_TARGETS の観点から問題に取り組んだことのある人はいますか?

于 2011-03-25T15:08:04.777 に答える
6

ここで言及されている文書化されていないオプションについて はどうですかhttp://paulf.free.fr/undocumented_qmake.html

# custom target 'doc' in *.pro file
dox.target = doc
dox.commands = doxygen Doxyfile; \
    test -d doxydoc/html/images || mkdir doxydoc/html/images; \
    cp documentation/images/* doxydoc/html/images
dox.depends =

...
# somewhere else in the *.pro file
QMAKE_EXTRA_UNIX_TARGETS += dox

これは解決策になるでしょうか?

于 2010-11-16T22:14:29.177 に答える
0

この Qt ブログ投稿は、QMAKE_EXTRA_COMPILERS と QMAKE_EXTRA_TARGETS の質問に明確に答えています。

すぐにQBSを紹介する予定です.. Digia と Qt コミュニティからの新しい Qt Build Suite.. うまくいけば、それは本当によく考えられています (そして、その点については十分に文書化されています)。

于 2013-10-26T00:03:11.190 に答える