介子相当于自动制造的CONFIG_STATUS_DEPENDENCIES?



我有一个项目的构建选项非常复杂,以至于我必须在配置过程中运行多个外部脚本。 如果这些脚本或其读取的文件发生更改,则需要重新运行配置。

目前该项目使用 Autotools,我可以使用CONFIG_STATUS_DEPENDENCIES变量来表达此要求。 我正在尝试将构建过程移植到 Meson,但我找不到等效的。 当前是否有等效项,还是需要提交功能请求?

为了具体起见,以下是正在进行的meson.build片段:

pymod = import('python')
python = pymod.find_installation('python3')
svf_script = files('scripts/compute-symver-floor')
svf = run_command(python, svf_script, files('lib'),
host_machine.system())
if svf.returncode() == 0
svf_results = svf.stdout().split('n')
SYMVER_FLOOR = svf_results[0].strip()
SYMVER_FILE  = svf_results[2].strip()
else
error(svf.stderr())
endif
# next line is a fake API expressing the thing I can't figure out how to do
meson.rerun_configuration_if_files_change(svf_script, SYMVER_FILE)

这就是custom_target()的用途。

最小示例

svf_script = files('svf_script.sh')
svf_depends = files('config_data_1', 'config_data_2') # files that svf_script.sh reads
svf = custom_target('svf_config', command: svf_script, depend_files: svf_depends, build_by_default: true, output: 'fake')

这将创建一个名为svf_config的自定义目标。过期时,它将运行svf_script命令。这取决于svf_depends文件对象中的文件,以及command关键字参数中列出的所有文件(即脚本本身(。

您还可以使用depends关键字参数将其他目标指定为依赖项。


output设置为'fake',以阻止介子抱怨缺少输出关键字参数。确保在相应的构建目录中有一个同名的文件,以防止目标始终被视为过期。或者,如果您的配置脚本生成输出文件,则可以在此数组中列出它们。

相关内容

  • 没有找到相关文章

最新更新