【问题标题】:Can you glob source code with meson?你能用介子获取源代码吗?
【发布时间】:2016-03-30 05:49:00
【问题描述】:

是否可以在介子构建中获取源代码文件?

【问题讨论】:

    标签: build build-system meson-build


    【解决方案1】:

    我在介子单元测试中发现了一个 example,它显示了如何获取源代码,但在 cmets 中它说这是不推荐

    if build_machine.system() == 'windows'
      c = run_command('grabber.bat')
      grabber = find_program('grabber2.bat')
    else
      c = run_command('grabber.sh')
      grabber = find_program('grabber.sh')
    endif
    
    
    # First test running command explicitly.
    if c.returncode() != 0
      error('Executing script failed.')
    endif
    
    newline = '''
    '''
    
    sources = c.stdout().strip().split(newline)
    
    e = executable('prog', sources)
    

    不推荐这样做的原因:尝试通过全局化目录来添加文件不会使这些文件自动出现在构建中。您必须手动重新调用介子才能将文件添加到构建中。重新调用 ninja 或其他后端是不够的,您必须重新调用介子本身。

    【讨论】:

      【解决方案2】:

      介子.build

      glob = run_command('python', 'glob')
      sources = glob.stdout().strip().split('\n')
      

      全局:

      import glob
      
      sources = glob.glob('./src/*.cpp') + glob.glob('./src/**/*.cpp')
      for i in sources:
          print(i)
      

      【讨论】:

        【解决方案3】:

        不鼓励使用通配源文件并且是不好的做法,not only on Meson。它会导致奇怪的错误,很难将一些开发文件放在一边进行开发,但您不想构建或发布,并且可能会导致增量构建出现问题。

        显式优于隐式。

        2021-03-02 编辑:

        另请阅读介子常见问题解答中的Why can't I specify target files with a wildcard?

        介子不支持这种语法,原因很简单。这不能既可靠又快速。

        如果在收到所有警告后,您仍想自行承担风险,FAQ 会在But I really want to use wildcards! 中告诉您如何操作。您只需使用外部脚本来执行 globbing 并返回文件列表(该脚本在该示例中称为 grabber.sh)。

        c = run_command('grabber.sh')
        sources = c.stdout().strip().split('\n')
        e = executable('prog', sources)
        
        

        【讨论】:

          【解决方案4】:

          不,这是不可能的。必须明确说明每个来源才能构建目标。

          【讨论】:

          • 我发现的唯一方法是调用一个外部进程,该进程全局化源并返回可以在 Meson 中迭代的文件列表。
          猜你喜欢
          • 1970-01-01
          • 2022-08-12
          • 1970-01-01
          • 1970-01-01
          • 2017-01-15
          • 2011-05-30
          • 1970-01-01
          • 2012-03-02
          • 2015-05-12
          相关资源
          最近更新 更多