我想在我的 C++ 库项目中使用 zstd 压缩库。我的构建系统基于 meson。我的 meson.build 文件如下所示。
当我运行
问题似乎在于zstd使用CMAKE作为默认构建系统,并且meson文件位于
project('foo', 'cpp', default_options :
['cpp_std=c++17', 'buildtype=release'],
version : '0.1', license: 'MIT')
subproject('zstd', default_options: 'builddir=build/meson')
我创建了一个zstd Meson包装文件 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作为默认构建系统,并且meson文件位于
build/meson
子文件夹中,而不是meson期望的根目录。我尝试过:
- 为子项目使用
default_options: 'builddir=build/meson'
,但没有效果 - 使用CMAKE集成构建zstd,但失败了并使设置更加复杂
- 制作补丁将zstd meson构建文件上移两个目录到
zstd
的根目录,但这需要更多的依赖项,并且后来由于zstd期望在build/meson
而不是根目录中找到文件而导致路径解析失败。
我能否轻松地将zstd构建为我的C++库的meson子项目?
subproject ('zstd')
和一个wrap文件。同时,我会使用数据库中可用的旧版本1.3.3,这是我的PR https://github.com/mesonbuild/zstd/pull/4,针对新版本,从我所看到的情况来看,有人将不得不手动制作一个压缩补丁。 - oleksii