【发布时间】:2021-01-12 16:24:35
【问题描述】:
我想为我的 C++ 库项目使用 zstd 压缩库。我的构建系统基于meson。我的 meson.build 文件看起来像这样
project('foo', 'cpp', default_options :
['cpp_std=c++17', 'buildtype=release'],
version : '0.1', license: 'MIT')
subproject('zstd', default_options: 'builddir=build/meson')
我做了一个zstd介子包装文件subprojects/zstd.wrap
[wrap-file]
directory = zstd-1.4.5
source_url = https://github.com/facebook/zstd/releases/download/v1.4.5/zstd-1.4.5.tar.gz
source_filename = zstd-1.4.5.tar.gz
source_hash = 98e91c7c6bf162bf90e4e70fdbc41a8188b9fa8de5ad840c401198014406ce9e
当我运行meson compile 时出现此错误
../meson.build:5:0: ERROR: Subproject exists but has no meson.build file
问题似乎在于 zstd 使用 CMAKE 作为默认构建系统,并且介子文件位于 build/meson 子文件夹中,而不是位于介子期望的根目录中。我试过了:
- 子项目使用
default_options: 'builddir=build/meson',但没有效果 - 使用 CMAKE 集成构建 zstd 但因其他错误而失败,这使得设置更加复杂
- 制作补丁以将 zstd 介子构建文件向上移动两个目录到
zstd的根目录,但这需要更多的依赖关系,后来由于路径解析失败,因为 zstd 期望文件位于build/meson而不是根目录。
我可以轻松地将 zstd 构建为我的 C++ 库的介子子项目吗?
【问题讨论】:
标签: c++ dependency-management meson-build zstd