当前位置: 首页 > article >正文

认识meson 的使用

认识meson 的使用

Hi, 我是Hywelstar, 对于做过Linux 嵌入式的朋友都接触过Makefile, cmake 等这类, 但是对于meson可能接触不多,今天主要记录下关于meson 如何去编译,后续可能用上,首先需要知道的是Meson 是一个由 Python 实现的开源项目,绝妙的一句是:开发人员花费在构建调试上的每一秒都是浪费。

Meson 是一个现代的构建系统,设计用于速度和简便性,适用于各种规模的项目。以下是使用 Meson 构建项目的基本步骤和一些重要的概念。

1. 安装 Meson

  • 在 Ubuntu 上,你可以通过以下命令安装 Meson:
    sudo apt-get install meson
    

2. 设置构建目录

  • 使用 meson setup 命令设置构建目录。可以通过 --prefix 选项指定安装路径。
    meson setup builddir --prefix=/path/to/install
    
    • builddir 是你希望生成构建文件的目录。
    • --prefix 指定安装路径(例如 /usr/local 或者当前目录下的 _install 目录)。

3. 编译项目

  • 进入构建目录,并运行以下命令进行编译:
    meson compile -C builddir
    
    • -C 选项指定编译目录。

4. 安装项目

  • 编译完成后,使用以下命令将编译好的文件安装到指定的路径:
    meson install -C builddir
    
    • 这个命令会将文件安装到你在 --prefix 中指定的路径。

5. 重新配置项目

  • 如果需要更改配置,可以使用 meson setup --reconfigure 来更新构建目录的配置。
    meson setup --reconfigure builddir --prefix=/new/path
    

6. 重要概念

  • meson.build 文件: 每个项目的构建脚本文件,定义了项目的依赖、编译选项、安装目标等。
  • subprojects 目录: 可以包含项目的子模块或依赖项目,通常通过 wrap 文件来管理。
  • pkg-config: 用于查找依赖库的工具,Meson 会自动处理大部分的依赖查找。
  • gobject-introspection: 如果项目中需要生成 GObject 类型库的绑定,Meson 会自动处理这些绑定的生成。

7. 自定义安装路径

  • 通过 --prefix 可以指定项目安装的根目录。例如:
    meson setup builddir --prefix=/home/user/custom_install
    
  • 然后在编译和安装后,所有生成的文件都会安装在 /home/user/custom_install 路径下的相应目录中。

8. Debug/Release 配置

  • Meson 支持不同的构建类型,如 debugrelease,可以通过 --buildtype 选项指定:
    meson setup builddir --buildtype=release
    

9. 生成和使用编译缓存

  • 使用 ccache 来加速编译,Meson 支持 ccache 的自动检测和使用,可以通过设置环境变量 CCCXX 来启用:
    export CC='ccache gcc'
    export CXX='ccache g++'
    

10. 交叉编译配置

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7'
endian = 'little'

[binaries]
c = '/path/to/arm-linux-gnueabihf-gcc'
cpp = '/path/to/arm-linux-gnueabihf-g++'
pkgconfig = '/path/to/arm-linux-gnueabihf-pkg-config'

参考:

官网:

The Meson Build system


http://www.kler.cn/a/293426.html

相关文章:

  • OceanStor Pacific系列 8.1.0 功能架构
  • Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件
  • C++《继承》
  • 【MySQL】约束
  • INQUIRE:一个包含五百万张自然世界图像,涵盖10,000个不同物种的专为专家级文本到图像检索任务设计的新型基准数据集。
  • 24/11/12 算法笔记<强化学习> Policy Gradient策略梯度
  • 卷积神经网络(一)
  • 大端模式和小端模式
  • linux安装composer
  • 关于Vscode的vscode-cpptools中的icph占用c盘内存过大问题
  • 分享一个使用智狐联创AI平台创建的WordPress分类广告插件
  • GDB快捷键问答之04 怎样查看内存块
  • 【学术会议征稿】2024年第十届机械制造技术与工程材料国际学术会议(ICMTEM 2024)
  • Datawhale X 李宏毅苹果书 AI夏令营 入门 Task3-机器学习框架
  • Java - 通过枚举避免大量 if-else
  • 目标检测常见数据集格式
  • 海思Hi3516CV610 超高清智慧视觉 SoC
  • Linux df命令详解,Linux查看磁盘使用情况
  • 【JavaScript】从作用域角度理解闭包
  • 【AIGC半月报】AIGC大模型启元:2024.09(上)
  • 实际开发中git在IDEA中的使用
  • 机器学习之实战篇——MNIST手写数字0~9识别(全连接神经网络模型)
  • UDP通信实现
  • windows下安装elasticSearch和kibana
  • 报错:CPU指令集的问题
  • Nest.js 实战 (十一):配置热重载 HMR 给服务提提速