不鼓励使用通配源文件,这也是不好的做法,而且不仅在 Meson 上。它会导致奇怪的错误,使得很难保留一些开发文件用于开发,但您不想构建或发布这些文件,并且可能会导致增量构建出现问题。
显式的比隐式的好。
2021-03-02 编辑:
另请阅读为什么我不能使用通配符指定目标文件?在介子常见问题解答中。
Meson 不支持这种语法,原因很简单。这不可能既可靠又快速。
如果在收到所有警告后,您仍然想自行承担风险,常见问题解答会告诉您如何操作,但我真的想使用通配符!。您只需使用外部脚本来进行通配并返回文件列表(grabber.sh在该示例中调用该脚本)。
c = run_command('grabber.sh')
sources = c.stdout().strip().split('\n')
e = executable('prog', sources)
Run Code Online (Sandbox Code Playgroud)
我在介子单元测试中找到了一个示例,展示了如何全局源,但在评论中它说不推荐这样做。
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)
Run Code Online (Sandbox Code Playgroud)
不建议这样做的原因是:尝试通过全局目录添加文件不会使这些文件自动出现在构建中。您必须手动重新调用介子才能将文件添加到构建中。重新调用 ninja 或其他后端是不够的,您必须重新调用介子本身。
小智 5
介子构建
glob = run_command('python', 'glob')
sources = glob.stdout().strip().split('\n')
Run Code Online (Sandbox Code Playgroud)
全局:
import glob
sources = glob.glob('./src/*.cpp') + glob.glob('./src/**/*.cpp')
for i in sources:
print(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6491 次 |
| 最近记录: |