qmake: дополнительные компиляторы (этапы обработки)?

В моем проекте, основанном на qmake, я хочу запустить xxd для некоторых файлов перед компиляцией. После документации соответствующая часть в моем файле pro выглядит следующим образом:

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

1 ответ

Решение

.input Атрибут ожидает имя переменной, а не список файлов. Попробуйте убрать $$ и просто использовать xxd.input = SHADERS,

.depends, с другой стороны, ожидает список файлов, поэтому используйте xxd.depends = $$SHADERS,

Если вы установите .variable_out в HEADERS, SOURCES, или же OBJECTS, компилятор запустится. Однако, если вы установите .variable_out к другому имени переменной, вы также должны установить .CONFIG = target_predeps для того, чтобы компилятор работал.

Другие вопросы по тегам