【问题标题】:Executing a makefile command from meson?从介子执行makefile命令?
【发布时间】:2021-04-04 23:07:31
【问题描述】:

我想尝试使用介子自动从 makefile 执行“make install”命令。 我在 meson.build 文件中尝试了以下内容:

r = run_command('make install')

    if r.returncode() != 0
      # it failed
    endif
    output = r.stdout().strip()
    errortxt = r.stderr().strip()

但它会打印以下错误:Program or command 'make install' not found or not executable. 这个 meson.build 文件与我的 makefile 位于同一目录中。这不是使用此功能的方法还是有更好的方法来实现我想要做的事情?

【问题讨论】:

    标签: c linux makefile meson-build


    【解决方案1】:

    第一个参数是命令(二进制),后跟它的参数:

    run_command('make', 'install')
    

    【讨论】:

    • 啊,是的。它在文档中这么说,但我没有仔细阅读。现在,当我使用此更改运行它时,没有错误,但生成文件似乎没有被执行。可能是运行命令的目录不包含makefile吗?如果是这样,有没有办法可以设置该目录?
    • 你看到这部分“命令从一个未指定的目录运行,Meson 将设置三个环境变量 MESON_SOURCE_ROOT、MESON_BUILD_ROOT 和 MESON_SUBDIR 指定源目录、构建目录和目标定义的子目录,分别。”?
    • 他们在这里编写了一个包装脚本:sourceforge.net/p/meson/wiki/Run%20targets,但 make 也接受 -C 来首先更改目录。
    • 如果我理解正确,为了设置运行命令run_command('make', 'install')的目录,我需要创建示例中所示的脚本吗?为什么我不能这样做:`run_command('cd', meson.source_root())'?如果这不是一个连贯的问题,我深表歉意,因为我对介子和一般项目建设都很陌生。
    • 此外,当复制 sourceforge.net/p/meson/wiki/Run%20targets 中显示的示例脚本时,它会显示以下错误:Run_target 仅采用一个位置参数:目标名称。
    猜你喜欢
    • 2023-03-30
    • 2022-11-24
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多