欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。

程序员文章站 2024-03-18 10:00:22
...

目录

一、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

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许可,并且可以安装在数据中心的硬件中,因此您可以控制所有数据。

meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。

下载地址:https://openbuildservice.org/

五、参考

1. https://ninja-build.org/

2. http://mesonbuild.com/Getting-meson.html

相关标签: 编译