安装

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. SLAM: 关于Orb_SLAM的使用小综述

    0.ORB_SLAM的官方网站:http://webdiis.unizar.es/~raulmur/orbslam/ 1. 参考知乎上对 orb-slam 的评价:orb-slam在众多SLAM方法中 ...

  2. grep命令总结

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...

  3. 1.1、配置Python虚拟环境

    安装虚拟环境 系统:CentOS 7.2 python版本:Python 2.7.5 1.虚拟环境介绍 虚拟环境是Python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装 ...

  4. 利用Redis锁解决高并发问题

    这里我们主要利用Redis的setnx的命令来处理高并发. setnx 有两个参数.第一个参数表示键.第二个参数表示值.如果当前键不存在,那么会插入当前键,将第二个参数做为值.返回 1.如果当前键存在 ...

  5. php 后端实现JWT认证方法

    JWT是什么 JWT是json web token缩写.它将用户信息加密到token里,服务器不保存任何用户信息.服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证.基于token的身 ...

  6. Python中字符串操作函数string.split('str1')和string.join(ls)

    Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...

  7. mongodb--find高级用法

    链式查询 db.person.find().limit(4).sort({sex:-1}) // sort来说,1 是升序, -1 是降序 尽量不要用mongodb去做一些复杂的运算 分页的写法 ·· ...

  8. P2310 loidc,看看海

    P2310 loidc,看看海 题目背景 loidc喜欢大海.在他放假的时候他经常一个人跑到海边独自玩耍. 在浪花的冲击下,他可以忘记打代码的烦躁,真是惬意极了. 虽然今天是周六,但今天可是11.8号 ...

  9. hdoj 1257最少拦截系统

     /*最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  10. TensorFlow 入门之手写识别(MNIST) 数据处理 一

    TensorFlow 入门之手写识别(MNIST) 数据处理 一 MNIST Fly softmax回归 准备数据 解压 与 重构 手写识别入门 MNIST手写数据集 图片以及标签的数据格式处理 准备 ...