一.概述

1.Meson 的简介

Meson(The Meson Build System)是个项目构建系统,类似的构建系统有 Makefile、CMake、automake …。 Meson 是一个由 Python 实现的开源项目,其思想是,开发人员花费在构建调试上的每一秒都是浪费,同样等待构建过程直到真正开始编译都是不值得的。

因此,Meson 的设计目的是在用户友好的同时不损害性能,Meson 提供客户语言(custom language)作为主要工具,用户可以使用它完成项目构建的描述。客户语言的设计目标是简单(simplicity)、清晰(clarity)、简洁(conciseness),其中很多灵感来源于 Python 语言。

Meson 的另个一主要设计目的是为现代编程工具提供优秀的支持和最好的实现。这包括一些特性如:单元测试(unit testing)、代码覆盖率报告(code coverage reporting)、头文件预编译(precompiled headers)。用户不需要寻找第三方宏指令(third party macros)或编写 Shell 脚本来实现这些特性,Meson 可以开箱即用。

Meson 相比 CMake 来说,不仅仅支持 C/C++,还支持多种编程语言。

如今,很多项目都由 CMake 转向到了 Meson,例如 DPDK 和 Mapnik。

网址:https://www.cnblogs.com/RioTian/p/17984286

2.Ninja 的简介

项目开发中一般将 Meson 和 Ninja 配合使用,Meson 负责构建项目依赖关系,Ninja 负责编译代码。Ninja 是一个轻量的构建系统,主要关注构建的速度。它与其他构建系统的区别主要在于两个方面:一是 Ninja 被设计成需要一个输入文件的形式,这个输入文件则由高级别的构建系统生成;二是 Ninja 被设计成尽可能快速执行构建的工具。

3.Meson 的特性

支持多种平台,包括 Linux、macOS、Windows、GCC、Clang、Visual Studio 等

支持多种编程语言,包括 C/C++、D、Fortran、Java、Rust

支持在一个非常可读和用户友好的非图灵完整 DSL 中构建定义

支持很多操作系统和裸机进行交叉编译

支持极快的完整和增量构建而优化,而不牺牲正确性

支持与发行版包一起工作的内置多平台依赖提供程序

4.Meson 的依赖

Meson 是依赖 Python 与 Ninja 实现的,依赖的版本如下:

Python (version 3.6 or newer)

Ninja (version 1.8.2 or newer)

版本查看: Ninja --version

二.Meson 安装

1.Windows 平台

a)在 Meson GitHub Releases 网站(https://github.com/mesonbuild/meson/releases)下载 Windows 版的安装程序,如 meson-0.60.3-64.msi

b)双击 meson-0.60.3-64.msi 安装程序,按默认选项直接安装 Meson

c)在系统的 开始菜单栏 里,找到 Visual Studio 开发人员工具(Native Tools Command Prompt for VS xxxx),双击运行后,在 CMD 窗口内执行以下命令查看 Meson 和 Ninja 的版本

> meson --version

0.60.3

> ninja --version

1.10.2

2.通过 PyPi 安装

Meson 可以直接通过 PyPi 安装,但必须确保使用的是 Python3 的 pip,安装命令如下:

# pip3 install meson ninja

或者使用标准的 Python 命令安装 Meson

# 安装meson

# python3 -m pip install meson

# 安装ninja

# python3 -m pip install ninja

3.Debian/Ubuntu

# apt install -y meson ninja-build

4.Fedora/CentOS

# yum install -y meson ninja-build

# 或者

# dnf install -y meson ninja-build

三.使用Meson在windows平台编译Glib库

1.下载Glib库:https://gitlab.gnome.org/GNOME/glib/-/tree/2.84.2?ref_type=tags

2.编译Glib库(windows下实测ok)

tar xf glib-*.tar.gz                    # unpack the sources

cd glib-*                               # change to the toplevel directory

meson setup _build                      # configure the build

meson compile -C _build                 # build GLib

ninja -C _build install

3.注意:编译时需要连接外网,否则有些依赖包无法下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88353.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88353.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88353.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt元对象系统实践指南:从入门到应用

目录 摘要 元对象系统核心概念 项目示例:动态UI配置工具 元对象系统在项目中的应用 1. 信号与槽机制 2. 动态属性系统 3. 运行时反射能力 4. 属性绑定与响应 实际项目应用场景 动态UI配置 对象序列化 插件系统 性能优化建议 结论 参考资料 摘要 本文…

Kafka 与其他 MQ 的对比分析:RabbitMQ/RocketMQ 选型指南(一)

消息队列简介 在当今的分布式系统架构中,消息队列(Message Queue,MQ)扮演着举足轻重的角色。随着业务规模的不断扩大和系统复杂度的日益提升,各个组件之间的通信和协同变得愈发关键 。消息队列作为一种异步的通信机制…

[创业之路-441]:行业 - 互联网+移动互联网和大数据时代的100个预言:技术个性、商业变革、社会重构、文化娱乐、环境、教育、健康医疗、未来生活方式

目录 一、技术革新 二、商业变革 三、社会重构 四、文化与娱乐 六、环境与可持续发展 七、教育与知识传播 八、健康与医疗 九、伦理与法律 十、未来生活方式 十一、终极预言 结语 在移动互联网和大数据时代,技术革新正以前所未有的速度重塑社会、经济与文…

基于STM32单片机WIFI无线APP控灯亮度灭设计

基于STM32单片机控灯设计 (程序+原理图+设计报告) 功能介绍 具体功能: 本设计由STM32F103C8T6单片机核心电路两位白色高亮LED灯电路WIFI模块ESP8266电路电源电路组成。 1、stm32实时监测wifi数据,解析数…

学会C++中的vector的基本操作

vector 是 C 标准库中的一个动态数组类,它可以在运行时自动调整大小,非常适合用于处理大小不确定的集合。下面是 vector 的常见用法示例,帮助你更好地理解如何使用它。 注意:所有用数组完成的任务都可以用vector完成。 1. 引入头…

AI时代工具:AIGC导航——AI工具集合

大家好!AIGC导航是一个汇集多种AIGC工具的平台,提供了丰富的工具和资源。 工具功能​: 该平台整合了多样的AIGC工具,涵盖了绘画创作、写作辅助以及视频制作等多个领域。绘画工具能够生成高质量的图像作品;写作工具支持从构思到润色的全流程写…

java-SpringBoot框架开发计算器网页端编程练习项目【web版】

今天分享一个使用springboot 写一个 前后端不分离的项目,网页计算器,来熟悉springboot框架的使用。 java版本:8。 springboot:2.6.13 使用的技术是: Java Spring Boot Thymeleaf HTML/CSS/JS 构建的 Web 端简约按钮…

linux操作系统的软件架构分析

一、linux操作系统的层次结构 1.内核的主要功能 1)进程管理 2)内存管理 3)文件系统 4)进程间通信、I/O系统、网络通信协议等 2.系统程序 1)系统接口函数库,比如libc 2)shell程序 3)编译器、编辑…

浅谈Java对象在内存中的存储形式

我们知道计算机以二进制的方式存储数据,以 64 位虚拟机为例,Java 对象在内存中的存储形式为: 开头是 8 个字节的 markword,用于标记对象的状态。(也就是一个 long 型数据的大小。不妨记作对象头里有一个长长的 markwo…

Android 开发问题:Wrong argument type for formatting argument ‘#2‘ in info_message

<string name"info_message">name: %1$s, age: %2$d</string>String str getString(R.string.info_message, "zs");在 Android 开发中&#xff0c;上述代码&#xff0c;出现如下警告信息 Wrong argument type for formatting argument #2 in…

Vue+spring boot前后端分离项目搭建---小白入门

首先&#xff0c;介绍一下软件准备工作 1.vscode 2.maven 3.vue搭建&#xff1a;node.jsyarnvite 一.后端搭建 打开vscode,建立一个springboot项目&#xff0c;参考链接&#xff1a;sping boot项目搭建 建立一个项目&#xff0c;目录结构如下&#xff1a; helloController.java…

“苏超”拉动周末消费,抖音生活服务:比赛城市迎来普遍消费上涨

“苏超”爆火&#xff0c;有力拉升了紧随赛程的周末消费。抖音生活服务数据显示&#xff0c;刚刚过去的周末&#xff08;6月21日至22日&#xff09;&#xff0c;江苏商圈休闲运动团购订单消费环比增长225%&#xff0c;到店消费金额环比增长181%。虽然几个比赛城市周末天气欠佳&…

使用python开发一个exe版本的计算器项目练习

最近在练习python开发软件&#xff0c;就开发了一个 客户端版的 计算器。先给大家看一下 做出来的样子 python版本&#xff1a;3.8 以上 主要是 使用 import tkinter as tk 这个库来实现图形界面开发 代码还是比较简单的&#xff1a; # 创建主窗口 root tk.Tk() root.title…

uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开

uniapp开发小程序&#xff0c;导出文件打开并保存 实现思路 1、调用请求获取到后端接口返回的下载文件的url路径 &#xff08;注意必须是https的路径&#xff0c;域名需要配置在微信小程序后台的合法域名里面&#xff09; 2、使用 uni.downloadFile 方法 &#xff08;下载文件…

vue2中前端实现图片裁剪上传到服务器

在 Vue 2 中实现图片裁剪并上传到服务器&#xff0c;你可以结合使用 Cropper.js 来进行图片裁剪&#xff0c;并通过 Axios 或者其他 HTTP 客户端库将裁剪后的图片上传至服务器。以下是一个基本的实现步骤和示例代码&#xff1a; 步骤 安装依赖&#xff1a;你需要安装 cropperj…

C# 网络编程-关于HttpWebRequest使用方式(二)

项目开发用到数据请求时候&#xff0c;会用的到HttpWebRequest的请求方式&#xff0c;主要涵盖GET、POST、PUT、DELETE等方法 一、HttpWebRequest简介 HttpWebRequest是.NET Framework中用于发送HTTP请求的核心类&#xff0c;适用于构建HTTP客户端。它支持GET、POST、PUT、DE…

git变更记录

目录 wvp-ui -new Dji 10.60.2.175:8000上的编译 个人拉分支 目前约定2025-06-25 wvp-ui -new branch new BASE_URL /new/ ci-cd : wvp-newui Config [Jenkins] 禁 用 10.30.2.8 ssh 10.30.2.8 /home/dualven/wvp-server/deployNewUi.sh Dji 主分支的构建&#xf…

前端如何禁止用户复制?

禁用右键菜单 document.addEventListener(contextmenu, function(e) {e.preventDefault(); });禁用快捷键&#xff08;CtrlC/X/A等&#xff09; document.addEventListener(keydown, function(e) {if (e.ctrlKey && [c, x, v, a].includes(e.key.toLowerCase())) {e.…

阿里云无影:开启云端办公娱乐新时代

阿里云无影云电脑&#xff1a;打破传统束缚&#xff0c;畅享云端自由 在数字化浪潮汹涌澎湃的当下&#xff0c;云计算技术持续革新&#xff0c;为我们的工作与生活带来前所未有的变革。阿里云作为云计算领域的佼佼者&#xff0c;推出的无影云电脑无疑是一颗璀璨的明星&#xf…

Windows 和 macOS 串口调试软件

在 Windows 和 macOS 上&#xff0c;你可以使用以下串口调试软件来查看开发板的打印信息。以下是常见且好用的工具推荐&#xff1a; Windows 推荐工具 PuTTY 免费、轻量级&#xff0c;支持串口&#xff08;COM&#xff09;和 SSH/Telnet下载地址&#xff1a;https://www.putty.…