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
для того, чтобы компилятор работал.