本文へスキップ
`Ctrl`+`K`

# 2.8. その他: CMakeを使ってビルド

このドキュメントはCMakeを使ってソースコードからGroongaをビルドする方法を説明します。

## 2.8.1. 必要なソフトウェアのインストール

以下は、GNU/Linux、UNIX、Windows向けの必要なソフトウェアの一覧です。

### 2.8.1.1. GNU/LinuxまたはUNIX

ソースコードに含まれる`setup.sh`を実行してください。トップディレクトリーにあります。

コマンド実行例

    $ groonga-*/setup.sh

`setup.sh`はDebian GNU/Linux、Ubuntu、AlmaLinux、Amazon Linux 2023をサポートしています。

#### 2.8.1.1.1. macOS

Xcodeをインストールしてください。

ソースコードに含まれる`setup.sh`を実行してください。トップディレクトリーにあります。

コマンド実行例

    $ groonga-*/setup.sh

### 2.8.1.2. Windows

次のソフトウェアをインストールします。

- Microsoft Visual Studio Community

- CMake

## 2.8.2. ソースコードのダウンロード

最新のソースアーカイブをpackages.groonga.orgからダウンロードできます： https://packages.groonga.org/source/groonga/groonga-latest.tar.gz

### 2.8.2.1. GNU/LinuxまたはUNIX

    $ wget https://packages.groonga.org/source/groonga/groonga-latest.tar.gz
    $ tar xvf groonga-latest.tar.gz

### 2.8.2.2. Windows

最新のzip形式のソースアーカイブをpackages.groonga.orgからダウンロードできます： https://packages.groonga.org/source/groonga/groonga-latest.zip

その後、アーカイブを展開します。

## 2.8.3. `cmake` を実行

ビルド環境にあった`build.ninja`のようなビルドファイルを生成する必要があります。

`cmake` へオプションを渡してビルドパラメーターをカスタマイズできます。

GNU/Linux or UNIXでのコマンド例

    $ cmake -S <Groonga source code directory path> -B <Build directory path> --preset=release-maximum

- `-S`オプション

  - Groongaのソースコードディレクトリを指定します

  - ダウンロードして展開したディレクトリを指定します

- `-B`オプション

  - ビルドディレクトリを指定します。

  - Groongaのソースコードディテクトリの外部にビルド専用のディレクトリを指定します

### 2.8.3.1. CMake プリセット

CMakeの3.21.0以降を使うと、ビルド用の設定をまとめたプリセットが利用できます。よく使われるCMakeのオプションの組み合わせが用意してあるので、基本的にはそれらのプリセットをご利用ください。CMakeオプションは個別に設定したい場合にご利用ください。利用できるプリセットは `cmake --list-presets` で確認できます。

    $ cmake --list-presets
    Available configure presets:

      "debug-default"                   - Optional features may not be enabled (debug build)
      "release-default"                 - Optional features may not be enabled (release build)
      "release-with-debug-info-default" - Optional features may not be enabled (release build with debug info)
      "debug-maximum"                   - Enable all features (debug build)
      "release-maximum"                 - Enable all features (release build)
      "release-with-debug-info-maximum" - Enable all features (release build with debug info)
      "doc"                             - For documentation
      "memory-debug"                    - For memory debug
      "benchmark"                       - For benchmark

### 2.8.3.2. CMake オプション

このセクションはCMakeの重要なオプションについて記載しています。

#### 2.8.3.2.1. `-G GENERATOR`

ジェネレータを指定します。

デフォルトはシステムよって異なります。

`cmake --help` でデフォルトのジェネレータと、利用可能なジェネレータを確認することができます。

    $ cmake --help
    ...
    The following generators are available on this platform (* marks default):
      Green Hills MULTI            = Generates Green Hills MULTI files
                                    (experimental, work-in-progress).
    * Unix Makefiles               = Generates standard UNIX makefiles.
      Ninja                        = Generates build.ninja files.
      Ninja Multi-Config           = Generates build-<Config>.ninja files.
      Watcom WMake                 = Generates Watcom WMake makefiles.
      CodeBlocks - Ninja           = Generates CodeBlocks project files.
      CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
      CodeLite - Ninja             = Generates CodeLite project files.
      CodeLite - Unix Makefiles    = Generates CodeLite project files.
      Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
      Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
      Kate - Ninja                 = Generates Kate project files.
      Kate - Unix Makefiles        = Generates Kate project files.
      Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
      Sublime Text 2 - Unix Makefiles

以下はGNU/LinuxまたはUNIXで `Unix Makefiles` をジェネレータに指定する例です。

    $ cmake . -G "Unix Makefiles"

以下はWindowsで `Visual Studio 17 2022 x64` をジェネレータに指定する例です。`-A` オプションでプラットフォーム（アーキテクチャ）を指定できます。

    > cmake . -G "Visual Studio 17 2022" -A x64

#### 2.8.3.2.2. `-DCMAKE_INSTALL_PREFIX`

Groongaのインストール先のディレクトリ/フォルダを指定します。

デフォルトはシステムにより異なります。例えば、 `/usr/local` や `C:/Program Files/groonga` です。

以下はGNU/LinuxまたはUNIXで `/tmp/local/` をインストール先として指定する例です。

    $ cmake . -DCMAKE_INSTALL_PREFIX="/tmp/local/"

以下はWindowsで `C:\Groonga` をインストール先として指定する例です。

    > cmake . -DCMAKE_INSTALL_PREFIX="C:\Groonga"

#### 2.8.3.2.3. `-DGRN_WITH_MRUBY`

mrubyサポートを有効化します。

mrubyサポートを有効にすることで シャーディング プラグインと ruby_eval が使用可能になります。

デフォルトは `OFF` です。

mrubyサポートが有効な場合、Groongaは同梱しているmrubyをビルドします。そのため、mrubyをビルドするのに必要なライブラリをインストールする必要があります。詳細は mrubyのコンパイルガイド を参照してください。

以下はmrubyサポートを有効にする例です。

    $ cmake . -DGRN_WITH_MRUBY=ON

#### 2.8.3.2.4. `-DGRN_WITH_APACHE_ARROW`

Apache Arrowサポートを有効化します。

Apache Arrowサポートを有効化すると、Apache ArrowのIPC streaming formatが使えるだけでなく、 n_workers や query_parallel_or でマルチスレッドで処理できるようになります。

デフォルトは `OFF` です。

Apache Arrowは 公式のドキュメントの手順 にしたがってインストールしてください。

以下はApache Arrowサポートを有効にする例です。

    $ cmake . -DGRN_WITH_APACHE_ARROW=ON

注釈

Apache Arrowを手動でインストールしている場合、 -DCMAKE_PREFIX_PATH=PATHS オプションを指定してください。

#### 2.8.3.2.5. `-DCMAKE_PREFIX_PATH=PATHS`

`.cmake` ファイルの検索パスを追加します。

GNU/LinuxまたはUNIXでは `:` で、Windowsでは `;` 区切ることで複数のパスを指定できます。

パッケージ管理システムを使用してインストールしたライブラリを使いたい場合は、 CMake のデフォルトの検索パスに `.cmake` ファイルが存在するためこのパラメータを指定する必要はありません。

`/usr`のようなシステム以外のディレクトリにインストールされたライブラリを使用する場合は、このパラメータでライブラリの `.cmake` ファイルパスを指定する必要があります。

以下はGNU/LinuxまたはUNIXで `/tmp/arrow/cmake/arrowConfig.cmake` の `.cmake` ファイルを指定する例です。

    $ cmake . -DCMAKE_PREFIX_PATH="/tmp/local"

以下はWindowsで `C:\arrow\lib\cmake\Arrow\ArrowConfig.cmake` の `.cmake` ファイルを指定する例です。

    > cmake . -DCMAKE_PREFIX_PATH="C:\arrow"

## 2.8.4. ビルドおよびインストール

これで、Groongaをビルドできるようになりました。

### 2.8.4.1. GNU/LinuxまたはUNIX

以下はGroongaをビルド、インストールするコマンドラインです。

    $ cmake --build <Build directory path>
    $ sudo cmake --install <Build directory path>

### 2.8.4.2. Windows

以下は `-G "Visual Studio 17 2022"` のようにジェネレーターでVisual Studioを指定したときの手順です。

Visual Studioか `cmake --build` を使用できます。

以下は `cmake --build` を使ってGroongaをビルド、インストールするコマンドラインです。

    > cmake --build . --config Release
    > cmake --build . --config Release --target Install

デバッグをする場合は、 `--config Release` の代わりに `--config Debug` を指定してください。