我有一个Meson项目,该项目将分几个步骤:
console.log(cust)
放入其中,cd
-在上游存档目录中生成特定文件我的问题是如何设置输入/输出文件和依赖项。到目前为止,我有:
./configure
如果允许Meson避免(例如,如果文件已下载的话)重复下载,则需要采取单独步骤的原因。
如果尝试运行此命令,它将无法找到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)
(因为它们在子目录中)。
如果您使用路径指定它们,那就是一个错误:
Doxyfile
我也可以通过在脚本中手动指定路径来做到这一点,但是介子构建基本上只是一个过于复杂的shell脚本,没有任何依赖项管理。
如何像这样在构建目录中链接文件的依赖关系?
答案 0 :(得分:0)
它恰好是介子的局限性,据报告为issue并仍处于打开状态。但是,对于您的Doxyfile修改自定义目标,替换应该起作用:
mod_doxy_tgt = custom_target('configure_doxy',
input : doxy_out,
...
output : '@BASENAME@.mod'
)
但是,一般来说,要解决该问题,请考虑在某个目录中创建另一个 meson.build 文件,在该目录中提取上游归档文件,并使用以下命令将其包括到主文件中:
subdir('extracted_docs_dir')
,以便Doxyfile与 meson.build 处于同一级别。因此,您可以直接在output :
中使用文件名,这对于将特定任务与主要构建规则隔离也很有用。