4步上手Meson:让PostgreSQL 16 构建更现代化!

Meson:开源的自动化构建系统 目前一些开源软件包的最新版本已不再使用configure或者autogen.sh脚本进行编译环境构建,而是改用了meson,对于首次接触meson的人来说可能会比较陌生,故而整理了这篇文章用来简单介绍下meson。Meson 是一个开源的自动化构建系统,专为提升构建效率和开发体验设计。极速构建:通过优化依赖分析和默认集成 Ninja 后端,显著加速编译过程。语法简洁:采用类 Python 的声明式 DSL(领域特定语言),配置文件()易读易写。开箱即用。 阅读详情

导 读

从PostgreSQL 16开始,除了传统的./configure和Makefile,我们将可以选择使用现代构建系统Meson来构建PostgreSQL。

几周前,当我在为PostgreSQL开发社区补丁时,我开始练习meson,我被告知除了通常的Makefile之外,还需要更新meson.build文件。这也意味着,如果您正在做开发社区功能的工作时,你需要考虑meson。今天,我将分享如何在Ubuntu 18.04上使用meson构建PostgreSQL的方法,希望对您有所帮助。

01 Meson vs Makefile

Makefile

  • 广泛使用、成熟和稳定。

  • Makefile语法是复杂的,编辑和维护起来很繁琐。对于非常大或复杂的项目,它可能变得难以管理。

Meson

  • 语法简洁,易于理解和编写。

  • 提供快速高效的编译过程,同时保持易用性和灵活性。

🔗Meson:https://mesonbuild.com/

02 安装

我们需要安装Meson和Ninja才能开始使用它。版本非常重要,使用过旧或过新的版本可能会导致在构建过程中出现错误。以下版本已经过确认可以正常工作(由我测试):

  • lmeson v0.57.2 (minimum meson version recommended by PostgreSQL), github download link-1

  • lninja v1.10.1, github downlad link-2

link-1:

https://github.com/mesonbuild/meson/releases/download/0.57.2/meson-0.57.2.tar.gz

link-2:

https://www.highgo.ca/2023/07/14/building-postgresql-in-a-modern-way-with-meson/

下载好它们后,您需要将它们添加到PATH环境变量中,并将ninja放在/usr/bin/ninja中,以便构建脚本可以找到它们。

我也尝试过将Meson v0.57.2与更新版本的Ninja一起使用,但在构建过程中遇到了错误,因此我不能保证不同版本组合的构建是否会正常工作。::>_<::

03 构建

Meson构建在PostgreSQL 16中可用,这个版本尚未正式发布,因此我们需要在主PG16开发分支上使用此功能。您可以在这里克隆官方的PostgreSQL源代码。

如果您之前已经运行过./configure和构建了PostgreSQL,则需要通过以下方式来撤销之前的操作。

$ make maintainer-clean

如果您想从头开始,可以执行以下步骤:

$ git clone https://github.com/postgres/postgres.git

现在,我们准备进行Meson构建。我们首先设置一个文件夹(在postgres文件夹内部),用于存储所有构建输出、日志、测试输出、配置等。

我们还可以在设置阶段传递特殊的构建参数。这些生成参数类似于传递给经典./configure脚本的参数。例如:

$ cd postgres
$ meson setup build --prefix=$PWD/highgo -Dcassert=true '-DPG_TEST_EXTRA=kerberos ldap' -Dbuildtype=debug

--prefix命令配置安装前缀,就像./configure一样。其余的可选构建参数通过-D参数名(无空格)传递给meson。

我们可以使用以下命令查看可能的参数列表及其描述:

$ meson configure
WARNING: The source directory instead of the build directory was specified.
WARNING: Only the default values for the project are printed, and all command line parameters are ignored.

Core properties:
  Source dir /home/caryh/postgres

Main project options:

  Core options            Default Value        Possible Values                                               Description
  ------------            -------------        ---------------                                               -----------
  ...
  buildtype               debugoptimized       [plain, debug, debugoptimized, release, minsize, custom]      Build type to use
  ...
  cassert                 false                [true, false]                                                 Enable assertion checks (for debugging)
  ...
  PG_TEST_EXTRA                                                                                              Enable selected extra tests
  ...

  ... and many more

由于我们在构建文件夹外运行meson configure,因此它会向您发出警告,指出它仅打印构建的默认值和可能值。要查看当前值,我们需要在创建的文件夹中重新运行相同的命令。

$ cd build
$ meson configure
Core properties:
  Source dir /home/caryh/postgres
  Build dir  /home/caryh/postgres/build

Main project options:

  Core options        Current Value                                    Possible Values                                               Description
  ------------        -------------                                    ---------------                                               -----------
  ...
  buildtype           debug                                            [plain, debug, debugoptimized, release, minsize, custom]      Build type to use
  ...
  cassert             true                                             [true, false]                                                 Enable assertion checks (for debugging)
  ...
  PG_TEST_EXTRA       kerberos ldap                                                                                                  Enable selected extra tests

  .... and many more

如果您需要更改任何构建参数,你也可以在构建文件夹内部进行更改,而不是像以前那样再次运行。

$ meson configure -Dcassert=false

当我们确定了构建参数后,我们可以通过在构建文件夹中运行以下命令来构建和安装:

$ ninja
$ sudo ninja install

就是这样!😁

04 运行测试套件

我们知道PostgreSQL源代码仓库中包含了许多测试用例,以确保软件正常工作。通常,我们会分别运行make check或make check-world来执行核心进程、扩展和前端工具的测试套件。在Meson中,所有这些都可以一次性运行。只需在构建文件夹内运行以下命令:

$ meson test
  1/257 postgresql:setup / tmp_install                                                     OK                8.48s
  2/257 postgresql:setup / install_test_files                                              OK                0.06s
  3/257 postgresql:pg_upgrade / pg_upgrade/001_basic                                       OK                0.18s   8 subtests passed
  4/257 postgresql:recovery / recovery/002_archiving                                       OK                3.61s   8 subtests passed
  5/257 postgresql:recovery / recovery/003_recovery_targets                                OK                6.73s   9 subtests passed
  6/257 postgresql:recovery / recovery/004_timeline_switch                                 OK                6.99s   3 subtests passed
  7/257 postgresql:recovery / recovery/005_replay_delay                                    OK                7.58s   3 subtests passed
  8/257 postgresql:recovery / recovery/006_logical_decoding                                OK                4.78s   20 subtests passed
  9/257 postgresql:recovery / recovery/001_stream_rep                                      OK               10.34s   59 subtests passed
 10/257 postgresql:recovery / recovery/007_sync_rep                                        OK                6.20s   11 subtests passed
 11/257 postgresql:recovery / recovery/010_logical_decoding_timelines                      OK                4.59s   13 subtests passed
 12/257 postgresql:recovery / recovery/013_crash_restart                                   OK                3.55s   18 subtests passed
 13/257 postgresql:recovery / recovery/014_unlogged_reinit                                 OK                3.72s   23 subtests passed
 14/257 postgresql:recovery / recovery/012_subtransactions                                 OK                6.63s   12 subtests passed
 15/257 postgresql:recovery / recovery/009_twophase                                        OK               11.63s   24 subtests passed
 16/257 postgresql:recovery / recovery/016_min_consistency                                 OK                4.34s   1 subtests passed
 17/257 postgresql:recovery / recovery/015_promotion_pages                                 OK                4.74s   1 subtests passed
 18/257 postgresql:recovery / recovery/008_fsm_truncation                                  OK               14.55s   1 subtests passed
 19/257 postgresql:recovery / recovery/017_shm                                             OK                5.23s   4 subtests passed

...
 36/257 postgresql:kerberos / kerberos/001_auth                                            ERROR             0.21s   (exit status 255 or signal 127 SIGinvalid)
...
236/257 postgresql:ldap_password_func / ldap_password_func/001_mutated_bindpasswd          ERROR             0.19s   (exit status 255 or signal 127 SIGinvalid)
...
249/257 postgresql:ldap / ldap/001_auth                                                    ERROR             0.17s   (exit status 255 or signal 127 SIGinvalid)
250/257 postgresql:ldap / ldap/002_bindpasswd                                              ERROR             0.18s   (exit status 255 or signal 127 SIGinvalid)
...


Ok:                 251
Expected Fail:      0
Fail:               4
Unexpected Pass:    0
Skipped:            2
Timeout:            0

我有 4 个与 ldap 和 kerberos 相关的测试用例,因为我没有设置这些服务,所以失败是在预料之内的。我想更多地强调这些额外的测试用例,除非我们在 $PG_TEST_EXTRA 环境变量中指定它们,否则这些用例通常不会在传统设置中运行。在传统方式中,要运行额外的测试,如 ldap 和 kerberos,我们需要执行以下操作:

$ cd src/test/ldap
$ make check PG_TEST_EXTRA=ldap

or

$ cd src/test/kerberos
$ make check PG_TEST_EXTRA=kerberos

默认情况下不会运行这些测试,因为它们需要设置单独的服务或者运行不安全的服务。使用Meson,如果您需要运行这些额外的测试,除非你在构建选项中明确定义 -DPG_TEST_EXTRA 为构建选项之一,不然的话以下命令将不起作用。

$ export PG_TEST_EXTRA="ldap kerberos"
$ meson test

===> will skip ldap and kerberos tests if you did not do '-DPG_TEST_EXTRA=kerberos ldap' during meson setup

05 结论

🏆总体而言,Meson提供了一种现代,直观和高效的方法来构建软件项目。虽然 Makefile 仍然是一个广泛使用且功能强大的构建系统,但Meson为现代的开发工作流程提供了更简洁和用户友好的体验。

【Meson】Meson 构建系统 在使用 Meson 时,您可以根据项目的具体需求和构建指南来调整这些参数。如果您不确定某个项目的特定构建选项,可以查看项目的。命令中添加参数来指定构建选项或启用/禁用特性。在使用 Meson 构建系统时,您可以通过在。文件或构建文档,以了解可用的选项和推荐配置。 阅读详情

相关推荐

PostgreSQL架构解析:从开源内核到国产数据库的自主可控之路

关系型数据库作为企业数据存储的核心组件,其架构设计与扩展机制直接影响系统的稳定性与可维护性。PostgreSQL以其模块化设计和扩展优先的哲学,通过清晰的层次结构(前端解析器、查询优化器、执行引擎、存储系统)提供了强大的定制能力。这种架构允许开发者在不修改核心代码的情况下,通过扩展机制添加新的数据类型、索引方法和存储引擎,为数据库的二次开发奠定了技术基础。在国产化与自主可控的背景下,基于PostgreSQL进行深度定制成为主流技术路径之一。开发团队可以通过协议兼容、源码分支增强、存储引擎插件化等不同模式,在

weixin_33966095的博客 462

Meson构建系统的使用

Meson是用于自动化构建的自由软件,使用Python语言编写,在 Apache 许可证 2.0版本下发布,主要目标是为了让开发者节约用于配置构建系统的时间。

QQVQQ的博客 8173

【ubuntu18.04】meson 安装 及python升级python3.9

发现openh264 支持meson 发现openh264 支持meson 写的也太简单了 完全不知道openh264 到底怎么搞 meson看起来支持windows和ubuntu 先安装python3 参考大神: 注意:meson安装前必须确认是否已经安装python3.5及以上版本;因为meson依赖于python3和ninja 1 安装python3和ninja: sudo apt-get install python3 python3-pip ninja-build 发现pytho

突围 3040

Linux上Meson安装及使用

1、 Meson简介 Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。2、Meson安装 注意:meson安装前必须确认是否已经安装python3.5及以上版本;因为meson依赖于python3和ninja2.1 安装python3和ninja: 发现python3 已经指向了pyhton3.6的包

程序猿老樊的博客 2万+

手机也能跑大模型?QNN框架实战:从模型量化到Android部署全流程

本文详细介绍了如何利用QNN框架将大模型部署到Android手机端进行端侧推理。通过实战演示了从模型量化(如INT4/INT8混合精度)到Android应用集成的全流程,包括内存优化、性能调优及常见问题排查,帮助开发者实现大模型在资源受限设备上的高效本地运行。

joy55的博客 501

2025年数学建模美赛(MCM)C题阅读与思考

2025年数学建模美赛(MCM)C题阅读与思考

carefreekid123的博客 7343

POSTGRESQL PG16 更高级的查询并行

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群 3群(共820人左右 1 + 2 + 3),如需要加 瑞典马工的群,可以单独提出,否则不会添加到瑞典马工的粉丝群。PostgreSQL 16,开源...

sql server的专栏 485

STM32F407通过SMBus协议精准读取BQ40Z50电池电量

本文详细介绍了STM32F407通过SMBus协议精准读取BQ40Z50电池电量的实现方法。从硬件连接到软件驱动开发,再到通信异常排查,提供了完整的解决方案。重点解析了SMBus协议的特殊时序要求、GPIO模拟驱动的关键代码,以及实际调试中的常见问题与对策,帮助开发者高效完成电池管理系统开发。

weixin_29189003的博客 253

windows 上编译PostgreSQL

编译前准备:Strawberry Perl //提供Perl的支持,内部还包括gccBison和Flex(不同的PG需要不通的版本,具体需要查看帮助文档)安装Bison和Flex目录不要选择默认的c:\program files,因为目录中间有空格,后续编译会报错,PG的文档中有记录,建议安装在没有空格的目录中,比如c:\GnuWin32目录中可以使用win_bison.exe和win_flex.exe。

风的专栏 666

把外部系统一键装进 SAP Build Work Zone:从零开始创建 HTML5 URL App

HTML5 URL App 是一种轻量级解决方案,可将外部网页或系统入口快速集成到SAP企业门户中。开发者只需在manifest.json中配置目标URL、导航模式等参数,无需开发完整前端应用。该方案利用SAP BTP的HTML5 Application Repository集中存储静态资源,通过HTML5 Apps Content Provider将应用暴露给子账号,最终在SAP Build Work Zone中以Fiori磁贴形式呈现。文章详细介绍了manifest.json的关键配置、三种基础设施组件

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 243

外向交货单批次赋值的标准姿势:用 BAPI_OUTB_DELIVERY_CHANGE 把 LIPS-CHARG 改得稳、改得干净

摘要: 外向交货单批次赋值涉及严格的业务约束,包括批次管理状态、单据状态、拆分规则等,直接更新表 LIPS 不可取。推荐使用 BAPI_OUTB_DELIVERY_CHANGE 接口,通过标准业务逻辑实现批次修改。关键点包括:区分单批次分配与批次拆分场景,正确设置 ITEM_CONTROL 控制结构,并确保单位/数量数据完整。附可直接执行的ABAP代码示例,实现安全可靠的批次更新流程。 (字数:149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 398

PostgreSQL学习之windows平台编译pgv17.4

  Windows系统上,pg数据库从版本17开始使用meson构建,删除了原来的src/tools/msvc目录。

weixin_38700215的博客 597

学Simulink——基于高渗透率可再生能源微电网的逆变器系统场景实例:含高比例逆变型电源的微电网暂态稳定性分析

本文详细介绍了基于MATLAB/Simulink的高渗透率可再生能源微电网建模方法,重点分析含高比例逆变型电源的微电网暂态稳定性问题。通过构建包含光伏、风电、逆变器和电网等模块的系统模型,展示了从项目创建、模块搭建到控制策略实现的完整过程。文章特别提供了逆变器PQ控制算法和故障处理逻辑的代码示例,并介绍了仿真参数设置与结果分析方法。该模型能有效评估微电网在故障条件下的动态响应特性,为优化逆变器控制策略提供依据,对现代智能电网研究具有重要意义。

xiaoheshang_123的博客 141

从零开始学PostgreSQL (四) & Linux 源码编译安装 PostgreSQL

在许多系统上,GSSAPI 系统(通常是 Kerberos 安装的一部分) 并未安装在默认搜索的位置(例如,/usr/include、 /usr/lib),因此除此选项外,您还必须使用选项 --with-includes和–with-libraries。这样做显著增大了最后安装的可执行文件的大小,并且在非 GCC 的编译器上,这么做通常还要关闭编译器优化, 这些都导致速度的下降。:这是一个目录,包含一些附加模块、插件或扩展,它们不是核心PostgreSQL系统的一部分,但可以添加到系统中以提供额外的功能。

CoderChronicle的博客 4578

路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)

图解A*、Dijkstra、GBFS算法原理,分析三种算法异同,提供C++/Python/Matlab仿真实现

FRIGIDWINTER的博客 2万+

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3355

PostgreSQL 存储过程代码审查自动化:plpgsql_check 批量检查脚本

plpgsql_check 是 PostgreSQL 存储过程(plpgsql)的静态代码分析工具,能帮助开发者在部署前自动检测语法错误、性能隐患和逻辑问题。本文将详细介绍如何利用 plpgsql_check 实现存储过程的批量检查,提升数据库开发效率和代码质量。 ## 📋 核心功能:为什么选择 plpgsql_check? plpgsql_check 作为 PostgreSQL 生态中专业

gitblog_00764的博客 745

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

企业级LLM知识平台部署实战:WeKnora容器化架构与生产环境优化指南

WeKnora作为开源LLM知识平台,通过RAG检索增强生成、自主推理代理和自维护Wiki三大核心能力,将原始文档转化为可查询的知识资产。本文为技术决策者和运维团队提供从架构设计到生产部署的完整解决方案,涵盖环境评估、容器化部署、性能优化和安全加固等关键环节。 ## 环境评估与容量规划 在部署WeKnora之前,必须进行全面的环境评估和容量规划。系统资源需求因使用场景而异,以下是不同规模部署的

gitblog_00746的博客 1022

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

从双解析器到循环工程:IvorySQL 五年技术演进路线的深度观察

作为一个在 PG 社区摸爬滚打了十几年的老兵,见证了太多基于 PG 的衍生项目起起落落。很多项目上来就喊全兼容 Oracle,结果做着做着就变成了 PG 改个名,或者兼容层越做越厚,最后跟 PG 主分支越离越远,成了没人维护的死分支。所以当 2021 年底 IvorySQL 刚出来的时候,我其实是持观望态度的。又是一个做 Oracle 兼容的?能撑多久?这支团队走出了一条不一样的路,而且走得很稳。60,770 次提交、49 个分支、574 个标签——迭代密度相当高30+ 位贡献者。

IvorySQL的博客 352

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

3种高效部署Janus WebRTC服务器方案:从源码到生产环境实战指南

Janus WebRTC服务器作为一款通用的WebRTC媒体服务器,在现代实时通信应用中扮演着核心角色。无论是构建视频会议系统、在线教育平台还是实时直播应用,Janus都能提供稳定可靠的WebRTC信令和媒体处理能力。本文将深入探讨三种高效的Janus部署方案,帮助你从源码编译到生产环境部署,全面掌握这一强大的WebRTC服务器技术。 ## ▌ 阶段一:部署前的技术决策树 在选择Janus部署

gitblog_01131的博客 443

嵌入式设备Armbian移植技术深度解析与多功能服务器实施方案

Armbian系统为Amlogic、Rockchip和Allwinner平台的嵌入式设备提供了完整的Linux解决方案,实现了从Android TV盒子到专业服务器的技术转型。本项目通过系统化的移植框架,支持超过200种不同型号的设备,涵盖了从低功耗的S905系列到高性能的RK3588芯片组,为技术爱好者提供了将闲置硬件转化为生产级服务器的完整技术路径。 ## 问题分析:嵌入式设备Linux化改

gitblog_00861的博客 837

Janus WebRTC服务器:企业级分布式架构设计与高可用部署方案

在数字化转型浪潮中,实时音视频通信已成为企业核心竞争力的关键要素。传统的WebRTC服务器部署面临着依赖管理复杂、扩展性有限、运维成本高昂等痛点,而Janus作为业界领先的通用WebRTC服务器,通过其模块化架构为企业提供了灵活的解决方案。本文将深入探讨Janus WebRTC服务器的企业级分布式架构设计,提供从单体部署到微服务集群的完整演进路径,并基于实际性能测试数据,为技术决策者和架构师提供可

gitblog_00325的博客 697

meson 简单教程(替代cmake) + 交叉编译

现在越来越多的开源项目采用了meson+ninja的构建方式,摒弃了CMake,Makefile的方式。虽然cmake很不错,但是语法和功能确实限制太多,难以阅读和理解。meson现在就是一个更优秀的替代者。scons 和 meson类似,但是速度太慢,整体设计没有meson更简单易懂。meson可以导出cmake/vs/…的工程,方便与IDE交互,以后使用meson管理项目是个非常不错的选择。

笨笨D幸福 - 后花园 4875

认识meson 的使用

对于做过Linux 嵌入式的朋友都接触过Makefile, cmake 等这类, 但是对于meson可能接触不多,今天主要记录下关于meson 如何去编译,后续可能用上,首先需要知道的是Meson 是一个由 Python 实现的开源项目,绝妙的一句是:开发人员花费在构建调试上的每一秒都是浪费。Meson 是一个现代的构建系统,设计用于速度和简便性,适用于各种规模的项目。以下是使用 Meson 构建项目的基本步骤和一些重要的概念。

hywelstar的嵌入式软件开发笔记 2260

meson构建入门

Meson 支持定义自定义编译选项。例如,可以在。

嵌入式大师之路 1437

Meson 构建系统:让 C++ 项目高速驶入快车道

Meson 构建系统:让 C++ 项目高速驶入快车道最近在使用一些开源项目的时候,发现都采用了meson+ninja的构建方式,摒弃了CMake,Makefile的方式,本文将会引入Meson,从入门安装到完整编写一个meson项目。下面,我们来进入正文。目录:1.Meson安装2.Meson Vs Cmake2.1 Meson的优势与劣势2.2 CMake的优势与劣势3.Meson WrapDB...

Francis的博客 2448
上一篇: “从0到1”指南 | IvorySQL数据库建模,助你快速实现数据操作!
下一篇: 7个工具!让Oracle 迁移至 PostgreSQL成为可能!
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值