ubuntu上安装meson & 如何使用meson编译C代码

什么是meson

Meson 旨在开发最具可用性和快速的构建系统。提供简单但强大的声明式语言用来描述构建。原生支持最新的工具和框架,如 Qt5 、代码覆盖率、单元测试和预编译头文件等。利用一组优化技术来快速变异代码,包括增量编译和完全编译。

安装meson

注意:meson安装前必须确认是否已经安装python3.5及以上版本;因为meson依赖于python3和ninja
1 安装python3和ninja: sudo apt-get install python3 python3-pip ninja-build
2 切换至python3:
Ubuntu系统上一般默认安装了python2.7,因此如果安装了python3系统还是默认使用python2.7,因此需要切换至python3。
sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.5 /usr/bin/python3
3 安装meson:pip3 install --user meson

使用meson

1,创建程序:test.c

#include<stdio.h>

int main(int argc,char **argv){
  printf("Hello meson!\n");
  return 0;
}

2,创建文件meson.build,内容:

project('test','c')
executable('demo','test.c')

3,文件保存如下:

root@nvidia-desktop:/media/016-meson# ls
meson.build  test.c

3,执行命令:

root@nvidia-desktop:/media/016-meson# meson build
The Meson build system
Version: 0.55.0
Source dir: /media/016-meson
Build dir: /media/016-meson/build
Build type: native build
Project name: test
Project version: undefined
C compiler for the host machine: cc (gcc 7.5.0 "cc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0")
C linker for the host machine: cc ld.bfd 2.30
Host machine cpu family: aarch64
Host machine cpu: aarch64
Build targets in project: 1

Found ninja-1.8.2 at /usr/bin/ninja
root@nvidia-desktop:/media/016-meson#

此时目录下产生文件build:

root@nvidia-desktop:/media/016-meson# ls
build  meson.build  test.c

文件build内容:

root@nvidia-desktop:/media/016-meson/build# ls
build.ninja  compile_commands.json  meson-info  meson-logs  meson-private

4,进入目录build,执行命令:

root@nvidia-desktop:/media/016-meson/build# ninja
[2/2] Linking target demo
root@nvidia-desktop:/media/016-meson/build# ls
build.ninja  compile_commands.json  demo  demo.p  meson-info  meson-logs  meson-private

njnja 相当于 make, 所以上面会编译代码,生成可执行文件 demo.

5,执行目标文件:

root@nvidia-desktop:/media/016-meson/build# ./demo
Hello meson!

编译开源代码

现在很多开源代码都转向meson进行构建和编译了,例如gsreamer,pulseaudio等这时候你可以在代码根目录下看到很meson.build文件,并且每个子目录页包含meson.build文件

root@nvidia-desktop:/media/014-gstreamer-1.17.2/gstreamer-1.17.2/gstreamer-1.17.2# ls
AUTHORS    COPYING  gst                       hooks        meson.build        pkgconfig  README                 scripts
build      data     gst-element-check-1.0.m4  libs         meson_options.txt  plugins    README.static-linking  tests
ChangeLog  docs     gstreamer.doap            MAINTAINERS  NEWS               po         RELEASE                tools
  • 1
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值