安装

Meson是基于python3实现,至少需要python3.5才能运行,默认采用ninja作为后端。
在Ubuntu下最简单的是通过pip3安装

 $ sudo apt-get install python3 python3-pip ninja-build
$ sudo pip3 install meson

也可以只将meson安装到当前用户目录下

 $ pip3 install --user meson

这种方式会将meson安装到~/.local/bin目录下,因此需要将这个目录增加到PATH中。

在较老的系统中,需要更新ninja:

 $ git clone -b release --single-branch https://github.com/ninja-build/ninja.git
$ cd ninja
$ ./configure.py --bootstrap
$ whereis ninja
ninja: /usr/bin/ninja /etc/ninja /usr/bin/X11/ninja
$ sudo cp ninja /usr/bin/ninja

一个简单的例子

 $ cat > meson.build << EOF
> project('mesontest', 'c')
> executable('mesontest', test.c)
> EOF $ meson builddir && cd builddir
$ ninja
$ ./mesontest
hello meson.

meson通过meson.build文件配置编译语言及文件,project指定项目名称及语言类型,executable指定可执行文件名及源文件。

通过Meson指定编译选项

通过"meson configure"命令查看meson内置的选项、默认值及可选值。
项目可以通过meson_options.txt来增加项目特有的选项。

 $ meson configure
...
Project options:
Option Default Value Possible Values Description
gtk_doc auto [enabled, disabled, auto] Generate API documentation with gtk-doc
...

在生成编译配置时,可以通过 -D 指定编译选项:

 $ meson builddir -Dprefix=/usr -Dgtk_doc=disabled -Dtests=disabled
$ cd builddir && ninja -j8
$ meson install

可以在源码根目录通过 configure更新编译选项,再执行ninja重新编译:

 $ meson configure builddir -Dprefix=/home/dev/tmp

https://mesonbuild.com/

作者:John.Leng
本文版权归作者所有,欢迎转载,商业转载请联系作者获得授权,非商业转载请在文章页面明显位置给出原文连接.

Meson使用的更多相关文章

  1. meson 中调用shell script

    meson 中有时需要调用其他脚本语言,加之对meson build system接口和原理不熟悉,无奈只有静心学习meson 官方文档,终于皇天不负有心人让我找到了: run_command() 只 ...

  2. Meson version is 0.44.1 but project requires >=0.45.

    /******************************************************************************* * Meson version is ...

  3. C 语言资源大全中文版

    C 语言资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-c 是 koz.ross 发起维护的 C 语言资源列表,内容包括了: ...

  4. java 线程一

    java基础学习总结--线程(一) 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个. ...

  5. dpdk-18.11开发库编译安装

    简介 dpdk官网 安装 下载 点击下载地址,选择合适的版本下载.这里下载DPDK 18.11.0 (LTS)版本. 编译 将下载的dpdk-18.11.tar.xz上传服务器,解压,这里放在了/op ...

  6. 做自己的docker镜像(基于ubuntu:16.04)

    基于ubuntu:16.04 apt-get update -y apt-get install sudo -y 换源 sudo apt-get install vim sudo vim /etc/a ...

  7. 源码解读Linux的limits.conf文件

    目录 目录 1 1. 前言 1 2. PAM 2 3. pam_limits 2 4. limits.conf的由来 3 5. 模块入口函数 4 6. 解析limits.conf 6 7. 生效lim ...

  8. lfs(systemd版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...

  9. lfs(systemv版本)学习笔记-第3页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-n ...

随机推荐

  1. 指定DIV局部刷新的简单实现,很简单,但是网上搜到的大部分都很复杂

    脚本部分: <script type="text/javascript"> $(function () { setInterval(function () { $(&q ...

  2. 【转】linux命令

    shell实例手册 0 说明{ 手册制作: 雪松    更新日期: 2015-11-02 欢迎系统运维加入Q群: 198173206  # 加群请回答问题    欢迎运维开发加入Q群: 3655344 ...

  3. Apex语言(八)类和对象

    1.类和对象 一切皆对象,是客观存在的万物,有标识.属性和行为.一个人,一台电脑,一辆轿车都是对象 类是创建对象的模板或蓝图,是对象的抽象,是对象的类型. 一个对象是一个类的一个实例,是一个类的变量. ...

  4. MySQL在Linux下的表名如何不区分大小写

    MySQL在Linux下的表名如何不区分大小写   今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...

  5. js:重复输出字符串中字符

    复习了 重复输出一个字符串后, 重复输出一个字符串是 比如给定 str:abc  num:3 要求输出 abcabcabc 文章链接:https://www.cnblogs.com/mobu/p/98 ...

  6. javascript正则表达式总结(test|match|search|replace|split|exec)

    test:测试string是否包含有匹配结果,包含返回true,不包含返回false. <script type="text/javascript"> var str ...

  7. C语言——定义&&声明

    1.变量的定义&声明 变量的声明有两种情况: <1>一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间. <2>另一种是不需要建立存储空间的. ...

  8. 孟晓阳:IT运行监控系统设计与使用心得

    http://www.cn-healthcare.com/article/20160325/content-482138.html

  9. 消息队列Rabbit安装

    先安装elang 再安装Rabbit *Rabbit安装路径不能有空格 安装完成

  10. UVA Jin Ge Jin Qu hao 12563

    Jin Ge Jin Qu hao (If you smiled when you see the title, this problem is for you ^_^) For those who ...