質問

私は先ほどうした混乱のルールおよび依存関係.のです。プロファイルを生成する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.

と言ってもいいっすべての追加 SOURCESHEADERS 課題という名前のファイル 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

この方法:

  1. 場合はありません Makefile.pri, で作成され;
  2. の場合 Makefile.pri が作成または更新され、その後 qmake 運行も考慮し、内容の再生に Makefile

としているこ に依存 qmake を生成するGNU Makefileが、同じような質問をするとともに、私が適応させることができる手引きの作業でも、他のターゲットシステムの構築.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top