安装

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. 复习java基础第六天(IO)

    一:File 类 • 输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中.  • 输出:将程序(内存)数据输出到磁盘.光盘等存储设备中 • Java 的 IO 流主要包括输入.输出两种 ...

  2. js 验证文件格式和大小

    <script> $('#btnSearch').click(function(){ // alert("000");// fileElem = document.ge ...

  3. eslint推荐编码规范和airbnb推荐编码规范

    Eslint规范 for 循环禁止使用无限循环(这个非默认推荐) // bad for (var i = 0; i < 10; i--) { } for (var i = 10; i >= ...

  4. 实现Modbus ASCII多主站应用

    1.更新设计关于原来的协议栈在Modbus ASCII主站应用时所存在的局限性与Modbus RTU也是一样的,所以我们不分析它的不足,只讨论更新设计.我们将主站及其所访问的从站定义为通用的对象,而当 ...

  5. Spring Cloud Alibaba、Spring Boot、Spring Cloud对应版本关系

    Spring Boot Spring Cloud Spring Cloud Alibaba 2.1.x Greenwich 0.9.x 2.0.x Finchley 0.2.x 1.5.x Edgwa ...

  6. SSL/TLS 加密新纪元 - Let's Encrypt

    转自: https://linux.cn/article-6565-1.html SSL/TLS 加密新纪元 - Let's Encrypt 根据 Let's Encrypt 官方博客消息,Let's ...

  7. 05.Python高级编程

    1 ==,is的使用 is 是比较两个引用是否指向了同一个对象(地址引用比较). == 是比较两个对象是否相等.(比较的数值) 2 深拷贝.浅拷贝.copy.copy 2.1 浅拷贝 浅拷贝: 拷贝的 ...

  8. 24.基于groovy脚本进行partial update

    主要知识点 在es中其实是有内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作 基于groovy脚本,如何执行partial update es scripting module,我们会 ...

  9. 从零开始创建一个 PHP 扩展

    创建一个扩展的基本步骤都有哪些.示例中,我们将实现如下功能: <?phpecho say();?> 输出内容: $ php ./test.php$ hello word 在扩展中实现一个s ...

  10. 【[Offer收割]编程练习赛11 B】物品价值

    [题目链接]:http://hihocoder.com/problemset/problem/1486 [题意] [题解] 设f[i][j]表示前i个物品,每种属性的状态奇偶状态为j的最大价值; 这里 ...