📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == CMakeとは、多様なプラットフォームでソースコードをビルドするためのツールである。<br> <br> ここでは、CMake向けに…」
 
(同じ利用者による、間の30版が非表示)
3行目: 3行目:
<br>
<br>
ここでは、CMake向けに構築されたソースコードをコマンドラインからビルドする方法について記載する。<br>
ここでは、CMake向けに構築されたソースコードをコマンドラインからビルドする方法について記載する。<br>
<br><br>
== CMakeのインストール ==
[https://cmake.org/download/ CMakeの公式Webサイト]にアクセスして、<br>
cmake-<バージョン>.tar.gzファイル(ソースコード)またはcmake-<バージョン>-linux-x86_64.tar.gzファイル(バイナリ)をダウンロードする。<br>
<br>
==== バイナリファイルをインストールする場合 ====
cmake-<バージョン>-linux-x86_64.tar.gzファイル(バイナリ)をを解凍して、任意のインストールディレクトリに配置する。<br>
tar xf cmake-<バージョン>-linux-x86_64.tar.gz
mkdir <CMakeのインストールディレクトリ>
cp -r cmake-<バージョン>-linux-x86_64/* <CMakeのインストールディレクトリ>
<br>
CMake GUIもインストールする場合、デスクトップエントリファイルを作成する。<br>
vi ~/.local/share/applications/CMake_GUI.desktop
<br>
# ~/.local/share/applications/CMake_GUI.desktopファイル
[Desktop Entry]
Type=Application
Version=1.0
Name=CMake
Comment=Cross-platform buildsystem
Exec=/<CMakeのインストールディレクトリ>/bin/cmake-gui %f
Icon=/<CMakeのインストールディレクトリ>/share/icons/hicolor/128x128/apps/CMakeSetup
Categories=Development;
MimeType=application/x-cmakecache;
Terminal=false
X-MultipleArgs=false
StartupNotify=true
<br>
~/.profileファイル等に環境変数PATHを追記する。<br>
vi ~/.profile
<br>
# ~/.profileファイル
export PATH="/<CMakeのインストールディレクトリ>/bin:$PATH"
<br>
==== ソースコードからインストールする場合 ====
CMake GUIをインストールする場合、ビルドに必要なライブラリをインストールする。<br>
sudo zypper install libcurl-devel libbz2-devel xz-devel libexpat-devel zlib-devel libarchive-devel libuv-devel \
                    libzstd-devel jsoncpp-devel rhash-devel libnghttp2-devel python3-Sphinx \
                    # Qt 6を使用する場合
                    qt6-core-devel qt6-gui-devel qt6-widgets-devel
                    # Qt 5を使用する場合
                    libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel
<br>
cmake-<バージョン>.tar.gzファイル(ソースコード)を解凍する。<br>
tar xf cmake-<バージョン>.tar.gz
cd cmake-<バージョン>
<br>
ビルド用ディレクトリを作成する。<br>
mkdir build && cd build
<br>
CMakeをビルドおよびインストールする。<br>
# CMake GUIをインストールする場合
../configure --qt-gui --prefix=<CMakeのインストールディレクトリ>
または
../bootstrap --qt-gui --prefix=<CMakeのインストールディレクトリ> --sphinx-html --sphinx-man --parallel=$(nproc)
# CMake GUIをインストールしない場合
../configure --prefix=<CMakeのインストールディレクトリ>
または
../bootstrap --prefix=<CMakeのインストールディレクトリ> --sphinx-html --sphinx-man --parallel=$(nproc)
gmake -j $(nproc)
gmake install
<br>
CMake GUIもインストールする場合、デスクトップエントリファイルを作成する。<br>
vi ~/.local/share/applications/CMake_GUI.desktop
<br>
# ~/.local/share/applications/CMake_GUI.desktopファイル
[Desktop Entry]
Type=Application
Version=1.0
Name=CMake
Comment=Cross-platform buildsystem
Exec=/<CMakeのインストールディレクトリ>/bin/cmake-gui %f
Icon=/<CMakeのインストールディレクトリ>/share/icons/hicolor/128x128/apps/CMakeSetup
Categories=Development;
MimeType=application/x-cmakecache;
Terminal=false
X-MultipleArgs=false
StartupNotify=true
<br>
~/.profileファイル等に環境変数PATHを追記する。<br>
vi ~/.profile
<br>
# ~/.profileファイル
export PATH="/<CMakeのインストールディレクトリ>/bin:$PATH"
<br><br>
== Extra CMake Module (ECM) のインストール ==
追加のCMakeモジュールパッケージ (ECM) は、CMakeが提供するモジュールを拡張するものである。<br>
ECMは、KDEソフトウェア全体におけるCMakeスクリプトの重複を削減することであるが、CMakeビルドシステムを利用するあらゆるソフトウェアに有用となるよう設計されている。<br>
<br>
ECMには、以下に示すものが含まれている。<br>
* find_packageコマンドが一般的なソフトウェアを検索するために使用するモジュール
* CMakeLists.txtファイル内で直接使用して一般的なタスクを実行できるモジュール
* ユーザがコマンドラインで指定する必要があるツールチェーンファイル
* KDEコミュニティが開発するソフトウェアで使用される一般的なビルド設定
<br>
[https://github.com/KDE/extra-cmake-modules/tags Extra CMake ModuleのGithub]にアクセスして、ソースコードをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
tar xf extra-cmake-modules-<バージョン>.tar.gz
cd extra-cmake-modules-<バージョン>
<br>
次に、Extra CMake Moduleのビルドに必要なライブラリをインストールする。<br>
sudo zypper install reuse sphinx libsphinxclient-devel \
                    # Qt 6を使用する場合
                    python311-Sphinx python311-PyQt6-devel qt6-core-devel qt6-tools qt6-linguist-devel
                    # Qt 5を使用する場合
                    python3-Sphinx python3-qt5-devel libQt5Core-devel libqt5-qttools libQt5QuickControls2-devel libqt5-linguist-devel
<br>
ビルド用ディレクトリを作成して、Extra CMake Moduleをビルドおよびインストールする。<br>
<u>Extra CMake ModuleのインストールディレクトリはCMakeのインストールディレクトリを共通であることに注意する。</u><br>
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=<CMakeのインストールディレクトリ> \
      -DBUILD_QTHELP_DOCS=ON \
      ..
make -j $(nproc)
make install
<br><br>
== ソース外ビルド ==
ソースコードディレクトリとビルドディレクトリが異なることをソース外ビルドと呼ぶ。<br>
これは、ソースコードとビルドの出力を分離することにより、開発者が同じソースコードディレクトリに複数のビルドディレクトリを作成できるという利点もあり、<br>
デバッグバージョンとリリースバージョン等の異なるオプションでビルドをセットアップすることができる。<br>
<br>
ビルドディレクトリをソースツリーの外側に配置することを推奨する。<br>
<br><br>
<br><br>


13行目: 150行目:
以下のように、CMakeコマンドを実行する。<br>
以下のように、CMakeコマンドを実行する。<br>
引数には、ソースコードのルートディレクトリ(CMakeLists.txtファイルがあるディレクトリ)を指定する。<br>
引数には、ソースコードのルートディレクトリ(CMakeLists.txtファイルがあるディレクトリ)を指定する。<br>
  cmake <ソースコードがあるディレクトリ>  
  cmake -G <プロジェクトジェネレータ  例. "Unix Makefiles"やNinja等> <CMakeLists.txtファイルがあるディレクトリ>
cmake --build <ビルドディレクトリ> --config <Debug または Release> --target <ターゲット名>
<br>
<br>
Makefileが作成されるので、それを使用してビルドを行う。<br>
Makefileが作成されるので、それを使用してビルドを行う。<br>
  make -j 8
  make -j $(nproc)
  make install  # ただし、CMakeLists.txtファイルに設定が記述されていることが必要
  make install  # ただし、CMakeLists.txtファイルに設定が記述されていることが必要
<br><br>
<br><br>
23行目: 161行目:
CMakeコマンドの実行時に、オプションを指定することが可能である。<br>
CMakeコマンドの実行時に、オプションを指定することが可能である。<br>
<br>
<br>
例えば、インストールディレクトリを変更するには、以下のように実行する。<br>
インストールディレクトリを指定するには、以下のオプションを付加する。<br>
cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> <ソースコードがあるディレクトリ>
または
cmake --install <インストールディレクトリ> <ソースコードがあるディレクトリ>
<br>
CコンパイラまたはC++コンパイラを変更するには、以下のオプションを付加する。<br>
-DCMAKE_C_COMPILER=<Cコンパイラのパス> -DCMAKE_CXX_COMPILER=<C++コンパイラのパス>
<br>
CコンパイラまたはC++コンパイラのフラグを変更するには、以下のオプションを付加する。<br>
-DCMAKE_C_FLAGS="-std=c17" -DCMAKE_CXX_FLAGS="-std=c++17"
<br>
オプション設定を対話式に変更する場合は、<code>ccmake</code>コマンドを使用する。<br>
ccmakeの操作方法は、画面下部に表示されている通りである。<br>
矢印キーもしくは[J]キー、[K]キーでカーソルが上下に移動すると、中段に選択中の変数の説明が表示される。<br>
[Enter]キーでその項目を編集して、[C]キーでConfigureを実行、[G]キーでGenerateを実行して、ccmakeを終了する。<br>
ccmake <ソースコードがあるディレクトリ>
<br>
オプション設定をGUIに変更する場合は、buildディレクトリを作成して、その中で以下のコマンドを実行する。<br>
cmake-gui <ソースコードがあるディレクトリ>
<br><br>
 
== ビルドタイプの指定 ==
変数を通したプロジェクト設定の例として、デバッグ / リリース等のビルドタイプを指定する方法がある。<br>
この設定には、<code>CMAKE_BUILD_TYPE、CMAKE_CONFIGURATION_TYPES</code>という2つのキャッシュ変数が絡む。<br>
どちらを設定すべきかは、ジェネレータによって変わる。<br>
<br>
==== Makefile ====
ジェネレータがMakefileの場合、単一のビルドオプションしか保持できないので、Configure / Generate時にビルドタイプを指定する。<br>
ビルドタイプは、キャッシュ変数<code>CMAKE_BUILD_TYPE</code>に値を設定することで指定できる。<br>
cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> -DCMAKE_BUILD_TYPE=Release <ソースコードがあるディレクトリ>
<br>
次に、生成されたMakefileを使用してビルドする。<br>
cmake --build .
<br>
CMakeでは、標準でDebug、Release、MinSizeRel、RelWithDebInfoの4種類のビルドタイプが用意されている。<br>
それぞれどのようなビルドオプションが採用されるかはコンパイラによって違うので、別途調べること。<br>
<br>
==== IDE ====
ジェネレータがVisual StudioやXcodeといったIDEの場合、プロジェクトファイルに複数のビルドタイプを保持できるので、<br>
Configure / Generate時にビルドタイプを指定する必要はない。<br>
  cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> <ソースコードがあるディレクトリ>  
  cmake -DCMAKE_INSTALL_PREFIX=<インストールディレクトリ> <ソースコードがあるディレクトリ>  
<br>
<br>
オプション設定を対話式に変更するには、ccmakeコマンドを使用する。<br>
次に、ビルドの実行時に、どのビルドタイプを使用するかを指定する。<br>
  ccmake <ソースコードがあるディレクトリ>
  cmake --build . --config Release
<br>
プロジェクトファイルに含めるビルドタイプを、<code>Release</code>と<code>RelWithDebInfo</code>の2つに限定する場合は、<br>
キャッシュ変数<code>CMAKE_CONFIGURATION_TYPES</code>に<code>Release;RelWithDebInfo</code>のように値を設定する。<br>
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:C]][[カテゴリ:C++]][[カテゴリ:Qt]]