差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
c_cpp:cmake [2019/02/18 05:09] – 作成 ともやん | c_cpp:cmake [2023/10/10 07:03] (現在) – [参考文献] ともやん | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Cmake - クロスプラットフォームのビルドツール | + | ====== Cmake - クロスプラットフォームのコンパイラに依存しない make 自動化システム |
+ | {{: | ||
[[https:// | [[https:// | ||
- | CMake は、ソフトウェアの構築、テスト、および、パッケージングを行うために設計された、オープンソースのクロスプラットフォームのツールである。\\ | + | CMake は、ソフトウェアの構築、テスト、および、パッケージングを行うために設計された、オープンソースのクロスプラットフォームのツールである。CMake は単純なプラットフォームとコンパイラに依存しない設定ファイルを使ってソフトウェアのコンパイルプロセスを制御し、ネイティブの makefile とワークスペースを生成するのに使われる。実際のビルドにおいては、make、Xcode、Visual Studio のようなネイティブのビルド環境が利用される。一連の CMake ツールは、Insight Segmentation and Registration Toolkit(ITK) や可視化ソフトウェアである Visualization Toolkit(VTK) などのオープンソースプロジェクト用の強力なクロスプラットフォーム構築環境の必要性に応えて Kitware 社によって開発された。\\ |
- | CMake は単純なプラットフォームとコンパイラに依存しない設定ファイルを使ってソフトウェアのコンパイルプロセスを制御し、ネイティブの makefile とワークスペースを生成するのに使われる。実際のビルドにおいては、make、Xcode、Visual Studio のようなネイティブのビルド環境が利用される。\\ | + | |
- | 一連の CMake ツールは、Insight Segmentation and Registration Toolkit(ITK) や可視化ソフトウェアである Visualization Toolkit(VTK) などのオープンソースプロジェクト用の強力なクロスプラットフォーム構築環境の必要性に応えて Kitware 社によって開発された。\\ | + | ===== 開発環境 ===== |
+ | 自分の開発環境は、OS が Fedora 29 でコンパイラは gcc バージョン 8.2.1、make は GNU Make 4.2.1 である。 | ||
+ | |||
+ | ===== インストール ===== | ||
+ | Fedora | ||
+ | <WRAP color_term> | ||
+ | <WRAP color_command>< | ||
+ | <span style=" | ||
+ | </ | ||
+ | <WRAP color_result_long>< | ||
+ | メタデータの期限切れの最終確認: | ||
+ | 依存関係が解決しました。 | ||
+ | ============================================================================================================== | ||
+ | | ||
+ | ============================================================================================================== | ||
+ | インストール: | ||
+ | < | ||
+ | < | ||
+ | 依存関係のインストール: | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | |||
+ | トランザクションの概要 | ||
+ | ============================================================================================================== | ||
+ | インストール | ||
+ | |||
+ | ダウンロードサイズの合計: | ||
+ | インストール後のサイズ: | ||
+ | これでよろしいですか? | ||
+ | パッケージのダウンロード: | ||
+ | (1/5): rhash-1.4.3-2.fc38.x86_64.rpm | ||
+ | (2/5): cmake-3.27.6-1.fc38.x86_64.rpm | ||
+ | (3/5): vim-filesystem-9.0.1984-1.fc38.noarch.rpm | ||
+ | (4/5): cmake-data-3.27.6-1.fc38.noarch.rpm | ||
+ | (5/5): cmake-gui-3.27.6-1.fc38.x86_64.rpm | ||
+ | -------------------------------------------------------------------------------------------------------------- | ||
+ | 合計 | ||
+ | トランザクションの確認を実行中 | ||
+ | トランザクションの確認に成功しました。 | ||
+ | トランザクションのテストを実行中 | ||
+ | トランザクションのテストに成功しました。 | ||
+ | トランザクションを実行中 | ||
+ | 準備 | ||
+ | インストール中 | ||
+ | インストール中 | ||
+ | インストール中 | ||
+ | インストール中 | ||
+ | インストール中 | ||
+ | scriptletの実行中: | ||
+ | 検証 | ||
+ | 検証 | ||
+ | 検証 | ||
+ | 検証 | ||
+ | 検証 | ||
+ | |||
+ | インストール済み: | ||
+ | cmake-3.27.6-1.fc38.x86_64 | ||
+ | rhash-1.4.3-2.fc38.x86_64 | ||
+ | |||
+ | 完了しました! | ||
+ | </ | ||
+ | </ | ||
+ | ※cmake-gui は Cmake のための QT GUI。\\ | ||
+ | |||
+ | ===== 使い方 ===== | ||
+ | |||
+ | ==== Makefile を生成 ==== | ||
+ | build ディレクトリを作成して、その中に Makefile を生成する。 | ||
+ | < | ||
+ | $ cd project_dir | ||
+ | $ mkdir build && cd build | ||
+ | </ | ||
+ | < | ||
+ | $ cmake .. | ||
+ | </ | ||
+ | or | ||
+ | < | ||
+ | $ cmake -G "Unix Makefiles" | ||
+ | </ | ||
+ | |||
+ | ==== ビルド ==== | ||
+ | build ディレクトリの中でビルドを開始する。 | ||
+ | < | ||
+ | $ make | ||
+ | </ | ||
+ | or | ||
+ | < | ||
+ | $ make -j4 | ||
+ | </ | ||
+ | |||
+ | ==== CMakeLists.txt の作成 ==== | ||
+ | <file autoconf CMakeLists.txt> | ||
+ | # CMake のバージョンを設定 | ||
+ | cmake_minimum_required(VERSION 3.12.1) | ||
+ | |||
+ | # デバッグおよびリリース構成タイプのみを生成 | ||
+ | set(CMAKE_CONFIGURATION_TYPES Debug Release) | ||
+ | |||
+ | # プロジェクト名と使用する言語を設定 | ||
+ | project(wxwebviewchromium CXX) | ||
+ | |||
+ | if (WIN32) | ||
+ | set(exe_mode WIN32) | ||
+ | else () | ||
+ | set(exe_mode "" | ||
+ | endif () | ||
+ | |||
+ | # 実行ファイルを設定 | ||
+ | add_executable(simple ${exe_mode} simple.cpp simple.h) | ||
+ | </ | ||
+ | |||
+ | === Chromium Embedded Framework(CEF) コンフィギュレーション === | ||
+ | <code autoconf> | ||
+ | # | ||
+ | # CEF コンフィギュレーション | ||
+ | # | ||
+ | |||
+ | # このプロジェクトの cmake/ ディレクトリをモジュールパスに追加 | ||
+ | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} " | ||
+ | |||
+ | # CEF 配布バージョンを指定 | ||
+ | set(CEF_VERSION " | ||
+ | |||
+ | # プラットフォームを決定 | ||
+ | if(" | ||
+ | set(CEF_PLATFORM " | ||
+ | elseif(" | ||
+ | if(CMAKE_SIZEOF_VOID_P MATCHES 8) | ||
+ | set(CEF_PLATFORM " | ||
+ | else() | ||
+ | set(CEF_PLATFORM " | ||
+ | endif() | ||
+ | elseif(" | ||
+ | if(CMAKE_SIZEOF_VOID_P MATCHES 8) | ||
+ | set(CEF_PLATFORM " | ||
+ | else() | ||
+ | set(CEF_PLATFORM " | ||
+ | endif() | ||
+ | endif() | ||
+ | |||
+ | # CEF バイナリ配布をダウンロードして解凍(DownloadCEF.cmake を実行) | ||
+ | include(DownloadCEF) | ||
+ | DownloadCEF(" | ||
+ | |||
+ | # CEF バイナリ配布の cmake/ ディレクトリをモジュールパスに追加 | ||
+ | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} " | ||
+ | |||
+ | # CEF 設定をロードします(FindCEF.cmake を実行) | ||
+ | find_package(CEF REQUIRED) | ||
+ | include_directories(${CEF_INCLUDE_DIR}) | ||
+ | </ | ||
+ | |||
+ | ===== 参考文献 ===== | ||