Я понял, что мой более ранний вопрос был немного перепутан правилами и зависимостями. Следующий .pro файл генерирует make-файл, который работает правильно, ЕСЛИ исходные файлы в 'сгенерированном' каталоге существуют в то время 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 работает, его единственная генерация make-файла, и PRE_TARGETDEPS и QMAKE_EXTRA_UNIX_TARGETS не помогают мне. Как я могу заставить qmake генерировать make-файл, который добавит содержание сгенерированного / к ИСТОЧНИКАМ?
] Это может понадобиться за два прохода.[
] []В ваш файл qmake добавьте следующую строку:[
] [include( generated/generated.pri )
]
[]Затем, в конце скрипта code_generator, добавьте исходники в файл generated.pri (используя для примера bash, но идея одинакова почти для всех языков):[
] [rm generated/generated.pri
for file in $( ls generated/*.cpp ); do
echo "SOURCES += ${file}" >> generated/generated.pri
done
]
[]При первом запуске файла qmake, генерируемый/сгенерируемый.pri предположительно будет пустым. Когда вы запускаете make, он заполнит файл generated.pri. Во второй раз он заново создаст make файл (как изменённый исходный .pri файл), а затем скомпилирует его заново. Возможно, вы сможете выполнять другие команды, которые сделают второй этап за вас.[
].