cmakelists.txt・とは?初心者向けガイド: 仕組みと使い方を完全解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
cmakelists.txt・とは?初心者向けガイド: 仕組みと使い方を完全解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

岡田 康介

名前:岡田 康介(おかだ こうすけ) ニックネーム:コウ、または「こうちゃん」 年齢:28歳 性別:男性 職業:ブロガー(SEOやライフスタイル系を中心に活動) 居住地:東京都(都心のワンルームマンション) 出身地:千葉県船橋市 身長:175cm 血液型:O型 誕生日:1997年4月3日 趣味:カフェ巡り、写真撮影、ランニング、読書(自己啓発やエッセイ)、映画鑑賞、ガジェット収集 性格:ポジティブでフランク、人見知りはしないタイプ。好奇心旺盛で新しいものにすぐ飛びつく性格。計画性がある一方で、思いついたらすぐ行動するフットワークの軽さもある。 1日(平日)のタイムスケジュール 7:00 起床:軽くストレッチして朝のニュースをチェック。ブラックコーヒーで目を覚ます。 7:30 朝ラン:近所の公園を30分ほどランニング。頭をリセットして新しいアイデアを考える時間。 8:30 朝食&SNSチェック:トーストやヨーグルトを食べながら、TwitterやInstagramでトレンドを確認。 9:30 ブログ執筆スタート:カフェに移動してノートPCで記事を書いたり、リサーチを進める。 12:30 昼食:お気に入りのカフェや定食屋でランチ。食事をしながら読書やネタ探し。 14:00 取材・撮影・リサーチ:街歩きをしながら写真を撮ったり、新しいお店を開拓してネタにする。 16:00 執筆&編集作業:帰宅して集中モードで記事を仕上げ、SEOチェックやアイキャッチ作成も行う。 19:00 夕食:自炊か外食。たまに友人と飲みに行って情報交換。 21:00 ブログのアクセス解析・改善点チェック:Googleアナリティクスやサーチコンソールを見て数字を分析。 22:00 映画鑑賞や趣味の時間:Amazonプライムで映画やドラマを楽しむ。 24:00 就寝:明日のアイデアをメモしてから眠りにつく。


cmakelists.txt・とは?

このページでは cmakelists.txt というキーワードについて、初心者にも分かるように詳しく解説します。このファイルはビルド設定を記述する重要な場所です。 実際には多くのプロジェクトで CMakeLists.txt という名前が使われますが、今回の名前は小文字の cmakelists.txt という書き方をとっています。

まず覚えておきたいポイントは、cmakelists.txt は「ビルドの指示書」だということです。ソースコードをどう集めて、どのファイルをコンパイルして、どんな実行ファイルを作るのかを、コンパイラやリンカに伝える役割を果たします。

このファイルがなければ、プロジェクトはどうやって動くべきかをコンピュータに伝える手がかりがなくなります。 そのため、少しでも大きなプロジェクトでは欠かせないファイルです。

以下は cmakelists.txt の基本的な内容をざっくりと示した表です。

able>項目説明ファイル名cmakelists.txt用途ビルド設定を定義するための指示を記述する実際の名前通常は CMakeLists.txt が使われる基本の書き方cmake_minimum_required や project などのコマンドを順に並べる配置通常はプロジェクトのルートディレクトリに置くble>

実際の例を見てみましょう。以下はとても小さな例です。この例は学習用であり、実際のプロジェクトではソースコードの場所に合わせてパスを調整します。

cmake_minimum_required(VERSION 3.10)project(MyApp)add_executable(MyApp src/main.cpp)

このように、最初に最低バージョンを指定し、次にプロジェクト名を決め、最後に実行ファイルを作る指示をします。ここで重要なのは、ファイルの順序は基本的に上から下へ読み込まれる点と、cmake が実行時にどのファイルを参照するかということです。

注意点として、大規模なプロジェクトでは複数のサブディレクトリにまたがる設定が必要になることがあります。 その場合は add_subdirectory などのコマンドを使って、各サブディレクトリの設定を読み込ませます。

最後に、cmake を使い始めるための一言アドバイスです。初めは小さなサンプルを作って、コンパイルが成功するまで何度も試してください。 小さな成功体験を積むと、自然と構成が理解できるようになります。


cmakelists.txtの同意語

cmakelists.txt
小文字表記のファイル名の可能性がある表現。実際には CMakeLists.txt(大文字表記)の同一ファイルを指すことが多い。
CMakeLists.txt
CMake の設定ファイル。CMake がビルド手順や依存関係を指示する、プロジェクトの根幹となるファイル。
CMake ビルド設定ファイル
CMake によるビルド設定を記述するファイル。
CMake スクリプトファイル
CMake のコマンドや指示を含むスクリプト形式のファイル。
CMake プロジェクト設定ファイル
プロジェクト全体の設定情報を管理するファイルとしての別称。
ビルド設定ファイル(CMake)
CMake を使ってビルドの設定を定義するファイル。
CMake 設定ファイル
CMake の設定情報を格納するファイルの総称。
CMake 管理ファイル
CMake によるプロジェクト管理のためのファイル。
プロジェクト指示ファイル
CMake がビルド手順を指示する役割を表す表現。

cmakelists.txtの対義語・反対語

Makefile
GNU Makeでビルド手順を記述する従来型のファイル。CMakeLists.txtとは別のビルドシステムの代表格としてよく挙げられる対義語です。
CMakeなし
CMakeを使わずにビルドを行うこと。CMakeLists.txtが不要になる状況を示す反対概念です。
非CMakeビルド
CMake以外のビルド手法を用いること。NinjaやMeson、Bazelなどの利用を含む広義の対義語です。
手動ビルド
自動化されたビルド設定を使わず、手作業でコンパイル・リンクを進める方法です。
別のビルドツール
Ninja、Meson、Bazel、SCons など、CMake以外のビルドツールを指す表現です。
ビルド設定ファイルなし
プロジェクトにビルド設定を記述したファイルが存在しない状態を指します。
CMake以外の設定ファイルを使う
Makefile、BUILD、build.ninja など、CMakeLists.txt以外の設定ファイルを使うことを示します。
CMakeLists.txtを無視したビルド
CMakeLists.txtを前提とせず、別の方法でビルドを行うことを表す表現です。
代替ビルドシステムの使用
CMakeの代わりに別のビルドシステムを選択している状態を指します。
CMakeに依存しない設計
CMakeへの依存を排除し、他の手法でビルド設定を行う設計思想を表します。
ビルドスクリプトなし
ビルドを自動化するスクリプト(例: makefile、build.ninja など)が存在しない状態を指します。

cmakelists.txtの共起語

cmakelists.txt
CMakeLists.txt の別表記として使われることがあるファイル名。実際には CMakeLists.txt のことを指す場合が多く、ケース表記の揺れにも対応する用語です。
CMake
クロスプラットフォーム対応のビルドシステム。CMakeLists.txt でビルド指示を生成します。
CMakeLists.txt
CMake のビルド設定を記述する主なファイル。プロジェクトの起点となるファイルです。
cmake_minimum_required
このプロジェクトで要求する最低の CMake バージョンを宣言するコマンドです。
project
プロジェクト名と使用言語を定義する基本コマンドです。
add_executable
実行ファイルを作成する対象を指定するコマンドです。
add_library
ライブラリを作成する対象を指定するコマンドです(静的/共有の選択が可能)。
target_link_libraries
ターゲットにリンクするライブラリを指定します。
include_directories
ヘッダファイルの検索パスを追加する古い書き方です(現代的には target_include_directories)。
target_include_directories
特定のターゲットに対してヘッダ検索パスを設定します。
set
変数を定義・変更する基本コマンドです。
CMAKE_CXX_STANDARD
C++ の標準バージョンを指定する変数です(例 17、20)。
CMAKE_BUILD_TYPE
ビルドの型を指定します(Release/Debug など)。
Release
最適化版のビルドを指します。
Debug
デバッグ情報付きのビルドを指します。
out-of-source(ビルドディレクトリ)
ソースとビルドを分けて置くビルド手法です。
Ninja
高速なビルドシステム。CMake から生成可能です。
Makefiles
GNU Make を用いるビルド生成方式です。
Visual Studio
Windows の IDE。CMake から VS 用のソリューションを生成します。
Xcode
macOS の IDE。CMake から Xcode プロジェクトを生成します。
find_package
外部ライブラリを検出して設定するコマンドです。
find_library
名前からライブラリを検索します。
include
外部ファイルを CMake に取り込むコマンドです。
file(GLOB)
指定パターンに一致するファイルを収集します。
configure_file
ファイルをテンプレートとして加工して生成します。
install
ビルド成果物をインストールするためのルールを定義します。
install(TARGETS)
実行ファイルやライブラリのインストール先を指定します。
add_subdirectory
サブディレクトリのビルドを追加します。
enable_testing
テスト機能を有効化します。
include(CTest)
CTest の設定を読み込み、テスト機能を統合します。
add_test
個別のテストケースを定義します。
option
ユーザーが有効/無効を選べるオプションを定義します。
BUILD_SHARED_LIBS
デフォルトで共有ライブラリをビルドするかを切替える変数です。
PRIVATE
リンク・ヘッダの公開範囲を制御する指定子の一つ。
PUBLIC
リンク・ヘッダを外部に公開する指定子。
INTERFACE
他のターゲットに対してのみ情報を伝える指定子。
if
条件分岐を作る構文です。
foreach
リストや範囲を繰り返し処理します。
while
条件が真の間、ループします。
message
ビルドの進捗や情報を表示します。
OpenCV
画像処理ライブラリ。CMake で見つけてリンクします。
Boost
広く用いられる C++ ライブラリ群。CMake で検出・リンクします。
Eigen
線形代数ライブラリ。数値計算で用いられます。
CMAKE_MODULE_PATH
カスタムモジュールの探索パスを設定します。
CMAKE_PREFIX_PATH
外部依存の検索基点となるパスを指定します。
CMAKE_EXPORT_COMPILE_COMMANDS
compile_commands.json を生成して、静的解析ツール等と連携します。
compile_commands.json
IDE・ツール向けのコンパイルコマンドの一覧を含むファイルです。

cmakelists.txtの関連用語

CMake
クロスプラットフォーム対応のビルド生成ツール。C/C++ だけでなく複数言語のビルド設定を記述し、適切なネイティブビルドシステムを自動生成します。
CMakeLists.txt
CMakeの設定を記述する主ファイル。プロジェクト名・言語・依存関係・ビルドターゲットなどを定義します。
cmake_minimum_required
CMakeの最低バージョンを宣言するコマンド。古い機能のサポート切り替えを防ぐ役割もあります。
project
プロジェクトの基本情報(名前、使用言語、バージョンなど)を設定する命令
add_executable
実行可能ファイルのターゲットを作成する命令
add_library
静的ライブラリや共有ライブラリのターゲットを作成する命令
add_subdirectory
サブディレクトリにある別の CMakeLists.txt を取り込み、階層構造でビルドする設定。
target_link_libraries
ビルドターゲットにリンクするライブラリを指定する命令
include_directories
古いスタイルのヘッダ検索パス追加。現在は target_include_directories が推奨されます。
target_include_directories
特定のターゲットに対してヘッダ検索パスを設定する命令
include
別の CMake ファイルを取り込み、定義を取り込む命令
find_package
外部パッケージを探して、ライブラリやヘッダを利用可能にする命令。
find_library
ライブラリのファイルパスを検索する命令
find_path
ヘッダファイルのパスを検索する命令。
configure_file
ファイルの内容をビルド時に置換して出力先へコピーする命令。
file
ファイル操作(コピー、GLOB、リスト化など)を行う柔軟なコマンド群。
execute_process
外部プログラムを実行し、出力や終了コードを取得する命令。
set
変数を定義・変更する基本コマンド。
option
ビルドオプションを ON/OFF で切り替えるコマンド。
generator_expressions
ビルド時の条件に応じて値を動的に選択する表現。
if
条件分岐を実装する構文。
elseif
if の条件を追加で評価する分岐構文。
else
条件分岐の別ルートを指定する構文。
endif
条件分岐の終端を示す構文。
foreach
反復処理を行う構文。
function
ユーザー定義の関数を作るための定義。再利用性を高める。
macro
ユーザー定義のマクロを作るための定義。簡易的な関数に近い使い方。
add_custom_command
ビルド前後に実行するカスタムコマンドを追加する命令。
add_custom_target
ビルド対象ではないが、特別な処理を起動するカスタムターゲットを作成する命令。
install
ビルド成果物をインストール先へ配置する設定。
export
ビルド設定を他のプロジェクトで再利用できるようエクスポートする機能。
CPack
CMake のパッケージングツール。パッケージの作成をサポートします。
include(CPack)
CPack の設定を有効化し、パッケージ作成を開始する指示。
cmake-gui
GUIで CMake 設定を編集するツール。
ccmake
curses ベースの CLI UI で CMake 設定を編集するツール。
CMAKE_CURRENT_SOURCE_DIR
現在のソースディレクトリを表す変数。
CMAKE_CURRENT_BINARY_DIR
現在のビルドディレクトリを表す変数。
CMAKE_SOURCE_DIR
トップレベルのソースディレクトリを表す変数。
CMAKE_BINARY_DIR
トップレベルのビルドディレクトリを表す変数。
CMAKE_BUILD_TYPE
デバッグ/リリースなど、ビルドタイプを指定する変数。
out_of_source_build
ソースコードとビルド成果物を別のディレクトリに分離してビルドする方式。
CMakeCache.txt
CMake の設定値をキャッシュとして保存するファイル。
CMakeFiles
CMake がビルド情報を内部的に格納するディレクトリ。
Makefile
GNU Make でのビルドに使われる指示ファイル(Ninja や Visual Studio 以外の生成系で使われることが多い)。
Ninja
高速なビルドツール。本来はビルドシステム、CMake が生成物として選択可能。
Visual Studio
Windows 用の統合開発環境。CMake が生成するソリューション/プロジェクトファイルのターゲットとして出力されることが多い。
generator
CMake が生成するビルドシステム(Makefile、Ninja、Visual Studio など)自体の概念。
add_dependencies
ターゲット間の明示的な依存関係を追加する命令。
target_compile_options
ターゲットごとにコンパイルオプションを設定する命令。
target_compile_definitions
ターゲットごとのプリプロセッサ定義を設定する命令。
target_compile_features
特定のコンパイラ機能の要求を指定する命令。
set_property
プロパティを任意の対象(ターゲット・ディレクトリ・ファイルなど)に設定する命令。

cmakelists.txtのおすすめ参考サイト


インターネット・コンピュータの人気記事

pin番号・とは?初心者にも分かるPINの基本と使い方共起語・同意語・対義語も併せて解説!
1300viws
7-zipとは?初心者でもわかる使い方と特徴を徹底解説共起語・同意語・対義語も併せて解説!
445viws
インターネットアクセスとは?初心者にも分かる基本ガイド共起語・同意語・対義語も併せて解説!
196viws
コンポーネント化・とは?初心者にも分かる基本と実例共起語・同意語・対義語も併せて解説!
148viws
トンバックとは?初心者でもわかるトンバック対策と改善のコツ共起語・同意語・対義語も併せて解説!
98viws
公開日・とは?初心者が押さえる基本ポイントと活用法共起語・同意語・対義語も併せて解説!
97viws
ミュート・とは?初心者でもわかる使い方と意味を解説共起語・同意語・対義語も併せて解説!
92viws
8ビット・とは?初心者にもわかる基本の解説共起語・同意語・対義語も併せて解説!
86viws
ランダムアクセスメモリ・とは?初心者でもすぐ分かる基本と仕組みの解説共起語・同意語・対義語も併せて解説!
82viws
スタンドバイとは?初心者にも分かる意味と使い方を徹底解説共起語・同意語・対義語も併せて解説!
80viws
lan配線・とは?初心者にも分かる自宅LANの基本と実践ガイド共起語・同意語・対義語も併せて解説!
76viws
中括弧・とは?初心者でも分かる基本と使い方を徹底解説共起語・同意語・対義語も併せて解説!
72viws
コア・とは?初心者が知っておく基本と使い方共起語・同意語・対義語も併せて解説!
72viws
バレットポイント・とは?初心者にも分かる使い方と作成のコツ共起語・同意語・対義語も併せて解説!
66viws
バリアント・とは?初心者でも分かる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
63viws
adb・とは?初心者のための使い方と基本解説共起語・同意語・対義語も併せて解説!
63viws
接続先ipアドレスとは?初心者が押さえる基本と使い方共起語・同意語・対義語も併せて解説!
61viws
delete とは?初心者にもわかる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
58viws
メジャーバージョンとは?初心者が知っておくべき基本と実践ガイド共起語・同意語・対義語も併せて解説!
54viws
プログレッシブダウンロードとは?初心者向けに分かりやすく徹底解説共起語・同意語・対義語も併せて解説!
53viws

新着記事

インターネット・コンピュータの関連記事