中間子コンパイルシステム

1. 中間子とは何ですか?

Meson は、迅速にビルドできるように設計されたコンパイル システムであり、Linux、Windows、MacOS をサポートする複数のプラットフォーム上でビルドできます。C/C++ のコンパイルをサポートするだけでなく、D、Fortran、Java、Rust などの言語もサポートします。

Meson は Python3 に基づいて実装されており、Ninja に依存しています。中間子と忍者はお互いを補完します。Meson がプロジェクトの依存関係の構築を担当し、Ninja がコンパイルを行います。Ninja も軽量なコンパイル システムです。Ninja については、後で機会を見つけて紹介します。

Meson の公式 Web サイトは次のとおりです: https://mesonbuild.com

2.インストール

  1. インストールしPython3pip3

  2. インストールNinja

    適切な方法:

    $ sudo apt-get install ninja-build
    

    pip3 方法:

    $ pip3 install ninja
    
  3. インストールMeson

    $ pip3 install meson 
    

    apt 方式でもインストールできますが、ソースの関係上、インストールされるバージョンが比較的低い場合があるため、apt 方式でのインストールをお勧めしますpip3

3. ハローワールド

このセクションでは、Meson を使用して簡単な C 言語プログラムを構築します。

  1. C 言語の hello world プログラムを作成します。

    #include <stdio.h>
    
    int main(int argc, char **argv) {
          
          
      printf("Hello there.\n");
      return 0;
    }
    
  2. 同じディレクトリにコンパイル スクリプトを作成しますmeson.build

    project('tutorial', 'c')
    executable('demo', 'main.c')
    
  3. コンパイル ディレクトリを設定します (builddir はディレクトリ名で、コンパイルによって生成されたすべてのファイルはこのディレクトリに自動的に保存されます)。

    $ meson setup builddir
    

    実行後、システムはプロジェクトの構成情報を出力します。

    The Meson build system
    Version: 1.0.0
    Source dir: /home/xupeng/work/project/tmp/meson
    Build dir: /home/xupeng/work/project/tmp/meson/builddir
    Build type: native build
    Project name: tutorial
    Project version: undefined
    C compiler for the host machine: ccache cc (gcc 5.4.0 "cc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609")
    C linker for the host machine: cc ld.bfd 2.26.1
    Host machine cpu family: x86_64
    Host machine cpu: x86_64
    Build targets in project: 1
    
  4. コンパイル ディレクトリを入力してコードをコンパイルします。

    $ cd builddir
    $ ninja
    # 或者
    $ cd builddir
    $ meson compile
    

    元のディレクトリで直接コンパイルすることもできます。

    $ meson compile -C builddir
    

    実行後、システムはコンパイル情報を出力します。

    INFO: autodetecting backend as ninja
    INFO: calculating backend command to run: /usr/bin/ninja
    [2/2] Linking target demo
    
  5. コンパイルが成功すると、ターゲットの実行可能ファイルのデモがコンパイル ディレクトリに生成されます。

    $ ./demo
    Hello there.
    

4. ライブラリをコンパイルする

先ほどは Meson を使用して実行可能ファイルをコンパイルしましたが、so ライブラリをコンパイルする必要がある場合は、次のようにmeson.build調整するだけで済みます。

project('tutorial', 'c')

# 将编译可执行文件的方式改成编译库的方式
# executable('demo', 'main.c')
library('demo', 'main.c')

再度実行するmeson compileと、コンパイルディレクトリに対象ライブラリが生成されますlibdemo.so

5. 中間子スクリプト

Meson のコンパイル設定とスクリプトは で記述されているmeson.buildため、さまざまなコンパイル設定を実行したい場合は、スクリプトを完成させるだけで済みます。Meson は、より柔軟で強力な構成を行うための一連の構文と API を提供します。

構文的には、Meson は Python3 をベースに実装されているため、Meson スクリプトの構文は Python に非常によく似ていますが、詳しくは公式 Web サイトの構文セクション https://mesonbuild.com/Syntax.html を参照してください

その他のコンパイル設定とスクリプトには主に次のものがあります。

  • コンパイルの種類 - 実行可能ファイルとしてコンパイルするかライブラリとしてコンパイルするかを構成します
  • header file - 設定が依存するヘッダー ファイルへのパス
  • インストール - 実行meson install後の
  • パラメータ - コンパイル時の構成入力パラメータ
  • 依存関係 - コンパイル時の構成時の依存関係ライブラリ
  • スレッド - コンパイル時にスレッドを構成します
  • externalcommand - 外部シェルコマンドを実行します。
  • 生成 - コードの事前構成
  • test - 単体テストをコンパイルして実行します
  • クロスコンパイル - クロスコンパイル情報の構成
  • コンパイル オプション -meson_options.txtコンパイルされたモジュールの動的構成
  • サブプロジェクト - サブプロジェクトの構成

このように設定できる項目はまだまだたくさんありますので、詳細は公式サイト https://mesonbuild.com/Manual.html のマニュアルセクションを参照してください

6. 参考接続

おすすめ

転載: blog.csdn.net/ZivXu/article/details/128551299