meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。
目录
一、meson和ninja简介
二、meson构建和ninja编译环境搭建
三、meson构建和ninja编译程序使用步骤
四、项目构建工具Meson、PyAnnolib、pyBit、Open Build Service介绍
五、参考
一、meson和ninja简介
meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。
meson是用Python语言开发的构建工具。Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。
原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。
我体会到使用meson的一个优点是当工程依赖一些库没有时,meson可以到git上自动下载并帮你安装,相比config要好。
编译和安装
当我们构建完成后我们需要进行编译,编译需要Ninja命令,同理,需要使用pip3进行下载
开源包的编译可能会出现下面转换
./autogen.sh && ./configure && make && sudo make install
变成了:
meson build && ninja -C build && sudo ninja -C build install
使用meson构建前相应的源码需要存在 meson.build构建描述文件
meson build 会生成build.ninja和compile_command.json
使用 Ninja 代替 make 编译安装
二、meson构建和ninja编译环境搭建
1 安装 meson meson依赖python3和ninja
apt install python3-pip
python3 -m pip install meson
python3 -m pip install ninja
我们需要安装 Ninja,只需要去官网下载一个 release 的二进制版本,放在系统目录(比如 /usr/bin)中就可以了,非常的简单。
下面简单介绍下通过编译 Ninja 源码的方式来安装 Ninja试用C++实现,其支持的语法非常简单
ninja是一个小型构建系统,专注于速度,和常用的make类似。ninja需要依赖于re2c,否则编译是会报错,re2c是一款语法分析器,
首先,确保已经安装了这些依赖:g++,graphviz,gtest,git,re2c 和 python2.7+。
获取源码 git clone git://github.com/ninja-build/ninja.git && cd ninja
bootstrap.py configure.py src/ misc /
我们可以去 HACKING.md 中查看更多信息。
编译
一切就绪之后,执行下列命令来编译 ninja
./configure.py --bootstrap
上述命令会在当前目录下生成一个叫 ninja 的可执行文件,然后我们把这个文件拷到系统目录(比如 /usr/bin)就完成安装了。
执行./configure.py
时还可以指定其他选项:
--bootstrap bootstrap a ninja binary from nothing
--verbose enable verbose build
--platform choose known platforms
--host choose host known_platforms
--debug enable debugging extras
--profile enable profiling
--with-gtest
--with-python use EXE as the Python interpreter
--force-pselect ppoll() is used by default where available
可以通过 ./configure.py -h
可以查看更多帮助。
如果我们想要开启 Ninja 的其他特性(比如:Bash completion, Emacs 和 Vim 编辑模式等),编译完成之后,我们需要把 misc 目录中的文件拷贝到合适的位置。
构建 meson可以到git上自动下载并帮你安装
meson _build
meson是用Python语言开发的构建工具。Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。我体会到使用meson的一个优点是当工程依赖一些库没有时,meson可以到git上自动下载并帮你安装,相比config要好。
依存关系:
Python(3.5版或更高版本)。
Ninja(1.5版或更高版本
Meson要求您具有源目录和构建目录,并且两者是不同的。在源根目录中必须存在一个名为meson.build的文件。要生成构建系统,请运行以下命令:meson setup <source directory> <build directory>
根据获取meson的方式,该命令也可能称为meson.py而不是普通meson。
键入meson --help可以找到有关运行Meson构建系统命令的更多信息。
要进行编译,请使用cd进入您的构建目录,然后键入ninja。要运行单元测试,请输入ninja test。
以后的开源包的编译可能会出现下面转换
./autogen.sh && ./configure && make && sudo make install
变成了:
meson build && ninja -C build && sudo ninja -C build install
meson.build 如下:
project('tutorial', 'c')
gtkdep = dependency('gtk+-3.0')
executable('demo', 'main.c', dependencies : gtkdep)
编译命令 编译需要Ninja命令 使用 Ninja 代替 make
ninja -C _build
在传统的 C/C++ 等项目构建时,通常会采用 make 系统使用 Makefile 文件来进行整个项目的编译构建
当直接执行 ninja
命令是,它会在当前目录下默认寻找 build.ninja 文件来进行编译。build.ninja 文件类似于 Makefile
在 ninja 根据 ninja.build 来编译时会自动创建一个 build 目录用于存放编译过程中的临时文件,比如 *.o 等。
.ninja 的语法规则跟 Makefile 类似,虽然有许多 generator 工具 可以用来自动生成 .ninja 文件
使用Camke -G Ninja来生成这个配置文件build.ninja 。Cmake会根据用户给定的CMakeLists.txt来生成build.ninja文件。
ninja 还提供了一个 Python based generator ,它实际上是一个 Python 模块 misc/ninja_syntax.py
,通过它我们可以较方便的生成 build.ninja 文件
可以通过 ninja -f NINJA_FILE
的方式来指定 .ninja 文件
安装命令
ninja -C _build install
三、meson构建和ninja编译程序使用步骤
第一次编译时需要在工作目录下运行 https://mesonbuild.com/Tutorial.html
. First we create a file main.c
#include<stdio.h>int main(int argc, char **argv) {printf("Hello there.\n");return 0;
}
Then we create a Meson build description and put it in a file called meson.build
in the same directory. Its contents are the following.
project('tutorial', 'c')
executable('demo', 'main.c')
meson builddir 会生成build.ninja和compile_command.json
cd builddir
ninja
而第二次之后的编译只需在builddir下运行ninja
(必须建立单独的编译目录builddir)
glib系列 编译
1) 下载glib Glib内存管理模块之magazine layer http://blog.csdn.net/mercy_pm/article/details/53398802
git clone https://github.com/GNOME/glib.git
2)glib目录下需要有meson.build
3)glib目录下 使用meson命令构建
meson builddir 会在builddir目录下生成build.ninja和compile_command.json
meson可以到git上自动下载并帮你安装 依赖
4)glib目录下使用Ninja命令 编译 ninja -C builddir 或者cd builddir && ninja
5)glib目录下使用Ninja命令 安装 ninja -C builddir install
四、项目构建工具Meson、PyAnnolib、pyBit、Open Build Service介绍
https://www.linux110.com/ruanjian/1388.html
以下为你介绍的项目构建工具都可用在Linux系统上:
Meson(构建系统)、
PyAnnolib(读取 Electric Accelerator (emake) 的 Python 库 注解文件非常详细的描述了构建过程中的各个任务以及完整的依赖图表。)
pyBit(Python构建集成工具包)
Open Build Service(开放构建服务)。OBS (Open Build Service) 是一个通用的系统,用以自动的从源码中构建和分发 Linux 软件包。开放式构建服务(OBS)是一种通用系统,可以自动,一致且可复制的方式从源中构建和分发二进制包。您可以发布适用于各种操作系统和硬件体系结构的软件包以及更新、附加组件、设备和整个发行版。
对于用户:
您的用户始终可以将最新版本的软件作为二进制软件包下载到其操作系统。他们使用自己熟悉的软件包管理工具,并且会像从操作系统供应商那里获取软件一样获取您的软件。
将它们连接到您的存储库后,您可以为它们提供维护或安全更新,甚至是软件的附件。OBS让您轻而易举,让他们超级轻松地享受您的软件!
对于免费软件项目和独立软件供应商:
OBS通过其项目模型已建立了内部协作,并将帮助您利用开源开发模型的强大功能。您的开发人员将获得所有软件打包和发布需求的一站式体验。OBS API允许不同的客户端和外部服务进行接口并使用其资源。当然,OBS是免费软件,已获得GPL许可,并且可以安装在数据中心的硬件中,因此您可以控制所有数据。
下载地址:https://openbuildservice.org/
五、参考
1. https://ninja-build.org/
2. http://mesonbuild.com/Getting-meson.html
meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。相关推荐
- 在线车辆推荐网 Python语言+Django框架+Mysql数据库 基于用户、物品的协同过滤推荐算法 开发在线汽车推荐系统 二手车网站推荐系统 分布式大数据、机器学习、人工智能开发
在线车辆推荐网 Python语言+Django框架+Mysql数据库 基于用户.物品的协同过滤推荐算法 开发在线汽车推荐系统 二手车网站推荐系统 分布式大数据.机器学习.人工智能开发 CarRecom ...
- Cloud Computing:基于无影云电脑利用Python语言实现绘制“可爱小老虎”虎年快乐及无影云电脑简介、应用场景、使用体验(五步快速上手)分享图文教程之详细攻略
Cloud Computing:基于无影云电脑利用Python语言实现绘制"可爱小老虎"虎年快乐及无影云电脑简介.应用场景.使用体验(五步快速上手)分享图文教程之详细攻略 目录 无 ...
- 【Python】Python语言学习:pip工具使用知识,模型保存pickle,PDF与docx相互转换处理...
2022年第01周. 这一周的Python语言学习,记录如下. 01 pip工具使用知识 1 pip是什么? pip是一个用Python写的用于安装和管理包的包管理系统.它连接一个叫做Python P ...
- 前端自动化构建工具:用Gulp4.0搭建一个基本的前端开发环境
一个项目的完成一般需要经过三个步骤:初始化.开发和部署.在前端开发过程中,我们经常需要依靠一些自动化构建工具来优化前端工作流程,来帮助我们完成一系列繁琐的工作,例如浏览器热更新.ES6编译.代码压缩. ...
- python如何画出多个独立的图片_如何使用python语言中的可视化工具绘制多个图
在使用的matplotlib第三方包的过程中,可以在画布上绘制一个图形之外,还可以绘制多个图形,根据分布来构成图形.下面利用具体的实例说明如何实现,操作如下: 工具/原料 python 截图工具 方法 ...
- 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)
本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...
- python语言介绍-Python这门语言的大概介绍
脚本语言是类似 DOS 批处理.UNIX shell 程序的语言.脚本语言不需要每次编译再执行,并且在执行中可以很容易地访问正在运行的程序,甚至可以动态地修改正在运行的程序,适用于快速地开发以及完成一 ...
- python项目构建工具zc.buildout
转载:http://blog.csdn.net/u011630575/article/details/52940099 buildout简介 Buildout 是一个基于Python的构建工具, Bu ...
- Django框架的电商商城的设计与实现python语言
摘要 随着计算机技术,网络技术的迅猛发展,Internet 的不断普及,网络在各个领域里发挥了越来越重要的作用.特别是随着近年人民生活水平不断提高,电商商城给商家的业务带来了更大的发展机遇. 在经济 ...
- python语言是不是非开源语言_python是开元语言吗?
展开全部 Python语言是一门通用语言,google的搜索引擎.纽交所的在线交易中间的很多功62616964757a686964616fe4b893e5b19e31333433626535能都是py ...
最新文章
- Web App、Hybrid App与Native App的设计差异
- 视+AR获近亿元A+轮融资,汽车之家领投
- mysql导入sql文件过大或连接超时的解决的方法
- HRFormer 踩坑日记
- msfvenom java_Msfvenom命令总结大全
- service和thread的区别,何时用service,何时用thread?
- python3.6下载百度云_Python3.6零基础入门与爬虫案例开发教程
- 无人机怎么设定航线_收藏!老飞手的航线规划笔记在这里...(上篇)
- (需求实战_终章) SpringBoot2.x 整合RabbitMQ
- 自定义shell脚本
- 输入框值不能赋值成功
- 用sql取a与b的交集_【庖丁解牛SQL(二)】SQL核心语法速查
- Spring Servlet 拦截器 过滤器
- c语言整人小程序格式,【C语言】整人小程序
- 小米台灯突然自己亮了_米家台灯Pro,工作读书随我选
- 机械工程和人工智能关系
- 【 优秀的无干扰文本写作工具】Ommwriter for Mac 1.57
- 单细胞三大R包之Seurat
- 3.3V过压保护电路
- 中国非处方彩色美瞳隐形眼镜行业销售动态与营销前景预测报告2022-2027
热门文章
- 回归创业本质:生意的本质就是赚钱
- 通过lua脚本识别微信,支付宝,龙支付
- 如何更改计算机时间和日期,如何更改电脑日期?电脑教程:然后修改
- python pdf转图片
- fofa域名检测存活工具_fofaAPI获取url并批量检测4.22通达oa任意用户登录漏洞
- HTML CSS——层叠
- 如何在vm虚拟机里面安装win10操作系统
- Tensorflow-gpu运行时报错Non-OK-status: GpuLaunchKernel
- 硬件只要一块esp8266 nodemcu板+几根杜邦线实现远程PC开机,软件全开源(替代智能开关)
- 微信小程序-wxs实现时间格式化过滤器(正则)