4

私の qmake ベースのプロジェクトでは、コンパイルの前にいくつかのファイルで 'xxd' を実行したいと考えています。ドキュメントに従って、私のプロファイルの関連部分は次のようになります。

SHADERS = shader/tone.frag \
          shader/trans.frag \
          shader/hue.frag

# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = SHADERS
xxd.input = $$SHADERS
xxd.variable_out = HEADERS

QMAKE_EXTRA_COMPILERS += xxd

Qmake は文句を言いませんが、xxd もまったく実行しません。前処理したいファイルごとに特別なターゲットを作成する必要がありますか? (結果の *.xxd ファイルは後でコンパイルされ、他の cpp ファイルにのみ含まれます)

編集: smokrisの助けを借りて、これは私のproファイルの部分をどのように修正したかです:

# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = $$SHADERS
xxd.input = SHADERS
xxd.variable_out = HEADERS
4

1 に答える 1

5

この.input属性は、ファイルのリストではなく、変数の名前を想定しています。$$を取り除いて、使用してみてくださいxxd.input = SHADERS

.depends一方、はファイルのリストを想定しているため、を使用しますxxd.depends = $$SHADERS

、、、またはに設定.variable_outするHEADERSと、コンパイラが実行されます。ただし、別の変数名を設定する場合は、コンパイラを実行するためにも設定する必要があります。SOURCESOBJECTS.variable_out.CONFIG = target_predeps

于 2013-01-10T16:42:43.717 に答える