我想使用 zstd我的 C++ 库项目的压缩库。我的构建系统基于 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/介子
并且不在根中。
我能否轻松地将 zstd 构建为我的 C++ 库的介子子项目?
最佳答案
meson 中没有选项 builddir,使用 default_options 无论如何你都可以只设置该子项目的项目选项 (zstd/build/meson/meson_options.txt )。因此,我认为解决这个问题的唯一方法是创建一个补丁,它应该相当简单:
在根子项目的目录中创建 meson.build
将 project(...) 从 zstd/build/meson/meson.build 移到这个
添加子目录,使其包含:
项目(...)
子目录('构建')
将一行 meson.build 放到 zstd/build
subdir('介子')
关于c++ - 如何使用介子构建系统将 zstd 构建为子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64079268/