如何使用介子构建系统将 zstd 构建为子项目
How to build zstd as a subproject with meson build system
我想使用 zstd compression library for my C++ library project. My build system is based on 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 作为默认构建系统,meson 文件位于 build/meson
子文件夹中,而不是 meson 期望的根目录中。我试过了:
- 对子项目使用
default_options: 'builddir=build/meson'
,但没有效果
- 使用 CMAKE 集成构建 zstd 但因其他错误而失败,这使得设置更加复杂
- 正在制作补丁以将 zstd 介子构建文件向上移动两个目录到
zstd
的根目录,但这需要更多依赖项并且后来因路径解析而失败,因为 zstd 需要文件在 build/meson
和不在根目录中。
我可以轻松地将 zstd 构建为我的 C++ 库的介子子项目吗?
meson 中没有 builddir 选项,使用 default_options 无论如何你都可以只设置该子项目的项目选项( zstd/build/meson/meson_options.txt)。因此,我认为解决这个问题的唯一方法是创建一个补丁,它应该相当简单:
在根子项目的目录中创建meson.build
将项目(...)从zstd/build/meson/meson.build移动到这个
添加subdir,所以它包含:
项目(...)
子目录('build')
下降 one-line meson.build 到 zstd/build
子目录('meson')
我想使用 zstd compression library for my C++ library project. My build system is based on 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 作为默认构建系统,meson 文件位于 build/meson
子文件夹中,而不是 meson 期望的根目录中。我试过了:
- 对子项目使用
default_options: 'builddir=build/meson'
,但没有效果 - 使用 CMAKE 集成构建 zstd 但因其他错误而失败,这使得设置更加复杂
- 正在制作补丁以将 zstd 介子构建文件向上移动两个目录到
zstd
的根目录,但这需要更多依赖项并且后来因路径解析而失败,因为 zstd 需要文件在build/meson
和不在根目录中。
我可以轻松地将 zstd 构建为我的 C++ 库的介子子项目吗?
meson 中没有 builddir 选项,使用 default_options 无论如何你都可以只设置该子项目的项目选项( zstd/build/meson/meson_options.txt)。因此,我认为解决这个问题的唯一方法是创建一个补丁,它应该相当简单:
在根子项目的目录中创建meson.build
将项目(...)从zstd/build/meson/meson.build移动到这个
添加subdir,所以它包含:
项目(...)
子目录('build')
下降 one-line meson.build 到 zstd/build
子目录('meson')