質問
私は先ほどうした混乱のルールおよび依存関係.のです。プロファイルを生成するmakefileを作品にしている場合、正しくソースディレクトリ内のファイルは'電'は存在しqmake運行しています。
idl.target = generated/qmtest.h
idl.commands = code_generator
idl.config = no_link
idl.depends = $$SOURCES $$HEADERS $$FORMS
TEMPLATE = app
INCLUDEPATH += generated
SOURCES += generated/*.cpp
PRE_TARGETDEPS += generated/qmtest.h
QMAKE_EXTRA_UNIX_TARGETS += idl
がqmake、そのみを生成するmakefile、PRE_TARGETDEPS&QMAKE_EXTRA_UNIX_TARGETSん助けてくれます。方法を教えてくださいqmakeをmakefileを追加する内容の発生をください。
解決
あなたは2回のパスでこれを実行する必要があります。
あなたのqmakeのファイルで、次の行を追加します:
include( generated/generated.pri )
次に、あなたのcode_generatorスクリプトの末尾に(例えばbashのを使ってますが、アイデアは、ほぼすべての言語で同じです)generated.priファイルにソースを追加します:
rm generated/generated.pri
for file in $( ls generated/*.cpp ); do
echo "SOURCES += ${file}" >> generated/generated.pri
done
あなたがqmakeのファイルを最初に実行するときには、生成された/ generated.priはおそらく空になります。あなたはmakeを実行すると、それはgenerated.priファイルを取り込みます。二回目は、それが再びコンパイルし、その後、(変更ソースの.priファイルなど)メイクファイルを再作成します。あなたはあなたのための第二段階を行うだろう他のコマンドと周りいじることができるかもしれません。
他のヒント
私はちょうど今、同じ問題を持っていましたが、1つだけ生成されたファイルのシンプルなユースケースのために。そのために、私はGENERATED_SOURCES代わりのソースを使用してこれを達成するためにはるかに簡単な方法を見つけます:
dummyfile.target = dummy.cpp dummyfile.commands = touch $$dummyfile.target QMAKE_EXTRA_TARGETS += dummyfile GENERATED_SOURCES += $$dummyfile.target
おそらく1はqmakeのループにそれをプッシュすることができ、同様に複数のファイルのための適切なターゲットを生成します。
私とが解決策に結びつくると思っているのであると一般に依存する qmake
を生成するGNU Makefile.
と言ってもいいっすべての追加 SOURCES
や HEADERS
課題という名前のファイル Makefile.pri
, は、発生するために、スクリプトを実行する generate_Makefile.pri.sh
こともあるの源および/またはヘッダに記 Makefile.pri
.
またこのファイルを自動的に確実に生成されるシステムの構築そのものでは .pro
ファイル、 qmake
可能なコンテンツを生成しMakefileの依存関係.
そして当社 .pro
ファイルです。
Makefile_pri.target = Makefile.pri
Makefile_pri.commands = generate_Makefile.pri.sh
Makefile_pri.depends = FORCE
Makefile.target = $$MAKEFILE
Makefile.depends = Makefile_pri
include($$Makefile_pri.target)
QMAKE_EXTRA_TARGETS = Makefile Makefile_pri
この方法:
- 場合はありません
Makefile.pri
, で作成され; - の場合
Makefile.pri
が作成または更新され、その後qmake
運行も考慮し、内容の再生にMakefile
としているこ は に依存 qmake
を生成するGNU Makefileが、同じような質問をするとともに、私が適応させることができる手引きの作業でも、他のターゲットシステムの構築.