`Ctrl`+`K`

# CMakeを使ってGroongaをビルドする方法

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

インストール にある特定環境用のドキュメントに、CMakeでビルドする際のその環境向けのより詳細な情報があります。特定環境用のドキュメントがある場合は、まずそちらを参照してください。

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

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

TODO

### GNU/LinuxまたはUNIX

> - CMake

### Windows

> - Microsoft Visual Studio Community

> - CMake

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

packages.groonga.org から最新のソースコードをダウンロードできます。

### GNU/LinuxまたはUNIX

    $ wget https://packages.groonga.org/source/groonga/groonga-12.0.8.tar.gz
    $ tar xvzf groonga-12.0.8.tar.gz

### Windows

最新のzipアーカイブをpackages.groonga.orgからダウンロードしてください。

> - https://packages.groonga.org/source/groonga/groonga-12.0.8.zip

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

## `cmake` を実行

`Makefile` のような、あなたの環境用のビルド用ファイルを作る必要があります。

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

### CMake オプション

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

#### `-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

#### `-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"

#### `-DGRN_WITH_MRUBY`

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

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

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

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

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

    $ cmake . -DGRN_WITH_MRUBY=ON

#### `-DGRN_WITH_DEBUG`

C/C++コンパイラーのデバッグオプションを有効にします。GDBやLLDBなどのデバッガーでデバッグするときに便利です。

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

以下はデバッグオプションを有効にする例です。

    $ cmake . -DGRN_WITH_DEBUG=ON

#### `-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 オプションを指定してください。

#### `-DCMAKE_PREFIX_PATH=PATHS`

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

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

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

使用してインストールしたライブラリを使いたい場合は、 CMake のデフォルトの検索パスに `.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"

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

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

### GNU/LinuxまたはUNIX

`make` が使用できます。

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

    $ make -j$(nproc || PATH="/sbin:$PATH" sysctl -n hw.ncpu) > /dev/null
    $ sudo make install

警告メッセージとエラーメッセージだけが見えるように `make` 時に `> /dev/null` をつけることを推奨します。開発者は新しいコミットで警告メッセージもエラーメッセージも増やすべきではありません。

### Windows

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

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

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

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