У меня есть проект Meson, который будет иметь несколько шагов:
- Скачать и распаковать архив
cd
в него, ./configure
- это создает определенный файл в верхнем архиве dir
- Настроить файл в архиве dir
- Дополнительные шаги сборки
У меня проблема в том, как настроить файлы ввода / вывода и зависимости. Пока что у меня есть:
src_archive = 'extracted-dir' # this is what comes out of the upstream archive
# wget and untar a tarball (produces the 'extracted-dir' dir in the build directory)
dl_tgt = custom_target('download',
command : [files('scripts/download.sh')],
output : src_archive
)
# cd to the directory, .configure
# when this is complete, a file 'extracted-dir/docs/Doxyfile' will exist
upstream_doxyfile = 'Doxyfile' # can't set a path on this file
conf_tgt = custom_target('configure_src',
input : dl_tgt,
command : [files('scripts/configure.sh'), '@INPUT@'],
output : doxy_out
)
# Modify the upstream Doxyfile (copy it and append some settings to the copy)
mod_doxyfile = 'Doxyfile.mod'
mod_doxy_tgt = custom_target('configure_doxy',
build_by_default : true,
input : conf_tgt,
command : [files('scripts/configure-doxy.sh'), '@INPUT@'],
output : mod_doxyfile
)
# ... and so on to run more steps as needed (in reality, some of these steps might be combined)
Причина иметь отдельные шаги, если позволить Meson избежать, скажем, повторения загрузки, если файл уже загружен.
Если вы попытаетесь запустить это, он не сможет найти Doxyfile
с (поскольку они находятся в подкаталогах).
Если вы укажете их путями, это ошибка:
ERROR: Output 'extracted-dir/docs/Doxyfile' must not contain a path segment.
Я также мог бы сделать это вручную, указав пути внутри сценариев, но тогда сборка мезонов - это просто слишком сложный сценарий оболочки без какого-либо управления зависимостями.
Как связать зависимости файлов в каталоге сборки следующим образом?