6

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

4

4 回答 4

3

我在介子单元测试中找到了一个示例,展示了如何获取源代码,但在评论中它说不推荐这样做。

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 或其他后端是不够的,您必须重新调用介子本身。

于 2015-12-28T17:44:29.690 回答
3

介子.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)
于 2021-08-15T14:33:52.043 回答
2

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

显式优于隐式。

2021-03-02 编辑:

另请阅读为什么我不能使用通配符指定目标文件?在介子常见问题解答中。

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

如果在所有警告之后,您仍然想自行承担风险,FAQ 会告诉您如何在但我真的想使用通配符!. 您只需使用外部脚本来执行 globbing 并返回文件列表(grabber.sh在该示例中调用该脚本)。

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

于 2018-02-27T17:16:49.453 回答
0

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

于 2016-09-18T03:07:02.350 回答