Linuxコマンド - CMake

提供:MochiuWiki : SUSE, EC, PCB
2022年2月16日 (水) 11:37時点におけるWiki (トーク | 投稿記録)による版 (→‎CMakeのインストール)
ナビゲーションに移動 検索に移動

概要

CMakeとは、多様なプラットフォームでソースコードをビルドするためのツールである。

ここでは、CMake向けに構築されたソースコードをコマンドラインからビルドする方法について記載する。


CMakeコマンドの基本

まず、ビルドするディレクトリを作成して、そのディレクトリに移動する。
ディレクトリを作成する理由は、ソースコードツリーがビルド時の生成ファイルで汚染されるのを防ぐためである。

mkdir build
cd build


以下のように、CMakeコマンドを実行する。
引数には、ソースコードのルートディレクトリ(CMakeLists.txtファイルがあるディレクトリ)を指定する。

cmake <ソースコードがあるディレクトリ> 


Makefileが作成されるので、それを使用してビルドを行う。

make -j 8
make install  # ただし、CMakeLists.txtファイルに設定が記述されていることが必要



オプションの指定

CMakeコマンドの実行時に、オプションを指定することが可能である。

インストールディレクトリを指定するには、以下のオプションを付加する。

cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> <ソースコードがあるディレクトリ>
または
cmake --install <インストールディレクトリ>


CコンパイラまたはC++コンパイラを変更するには、以下のオプションを付加する。

cmake -DCMAKE_C_COMPILER=<Cコンパイラのパス> -DCMAKE_CXX_COMPILER=<C++コンパイラのパス> <ソースコードがあるディレクトリ>


オプション設定を対話式に変更する場合は、ccmakeコマンドを使用する。
ccmakeの操作方法は、画面下部に表示されている通りである。
矢印キーもしくは[J]キー、[K]キーでカーソルが上下に移動すると、中段に選択中の変数の説明が表示される。
[Enter]キーでその項目を編集して、[C]キーでConfigureを実行、[G]キーでGenerateを実行して、ccmakeを終了する。

ccmake <ソースコードがあるディレクトリ>


オプション設定をGUIに変更する場合は、buildディレクトリを作成して、その中で以下のコマンドを実行する。

cmake-gui <ソースコードがあるディレクトリ>



ビルドタイプの指定

変数を通したプロジェクト設定の例として、デバッグ / リリース等のビルドタイプを指定する方法がある。
この設定には、CMAKE_BUILD_TYPE、CMAKE_CONFIGURATION_TYPESという2つのキャッシュ変数が絡む。
どちらを設定すべきかは、ジェネレータによって変わる。

Makefile

ジェネレータがMakefileの場合、単一のビルドオプションしか保持できないので、Configure / Generate時にビルドタイプを指定する。
ビルドタイプは、キャッシュ変数CMAKE_BUILD_TYPEに値を設定することで指定できる。

cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> -DCMAKE_BUILD_TYPE=Release <ソースコードがあるディレクトリ> 


次に、生成されたMakefileを使用してビルドする。

cmake --build .


CMakeでは、標準でDebug、Release、MinSizeRel、RelWithDebInfoの4種類のビルドタイプが用意されている。
それぞれどのようなビルドオプションが採用されるかはコンパイラによって違うので、別途調べること。

IDE

ジェネレータがVisual StudioやXcodeといったIDEの場合、プロジェクトファイルに複数のビルドタイプを保持できるので、
Configure / Generate時にビルドタイプを指定する必要はない。

cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> <ソースコードがあるディレクトリ> 


次に、ビルドの実行時に、どのビルドタイプを使用するかを指定する。

cmake --build . --config Release


プロジェクトファイルに含めるビルドタイプを、ReleaseRelWithDebInfoの2つに限定する場合は、
キャッシュ変数CMAKE_CONFIGURATION_TYPESRelease;RelWithDebInfoのように値を設定する。


Extra CMake Module(ECM)のインストール

Extra CMake ModuleのGithubにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf extra-cmake-modules-<バージョン>.tar.gz
cd extra-cmake-modules-<バージョン>


次に、Extra CMake Moduleのビルドに必要なライブラリをインストールする。

sudo zypper install sphinx libsphinxclient-devel reuse \
                    libQt5Core-devel libqt5-qttools libQt5QuickControls2-devel libqt5-linguist-devel


ビルド用ディレクトリを作成して、Extra CMake Moduleをビルドおよびインストールする。
Extra CMake ModuleのインストールディレクトリはCMakeのインストールディレクトリを共通であることに注意する。

mkdir build && cd build

cmake -DCMAKE_INSTALL_PREFIX=<CMakeのインストールディレクトリ> ..
make -j $(nproc)
make install