見出し画像

CMakeLists.txtファイルの作成方法

CMakeLists.txt ファイルは、CMake を使用して C++ プロジェクトをどのように構築および管理するかを定義する特定の形式に従います。CMakeLists.txtファイルには、CMake が異なるプラットフォームおよびコンパイラ用のメイクファイルまたは他のビルド設定を生成するために解釈する一連のディレクティブコマンドが含まれています。

基本構造

通常、CMakeLists.txt ファイルは CMake の最低バージョンの定義とプロジェクト名およびバージョンの設定から始まります:

cmake_minimum_required(VERSION 3.10)  # CMake の最小バージョンを設定

# プロジェクト名とバージョンを設定
project(MyProject VERSION 1.0)

C++ 標準の指定

プロジェクトに必要な C++ 標準を指定できます:

set(CMAKE_CXX_STANDARD 17)  # C++17 標準を使用
set(CMAKE_CXX_STANDARD_REQUIRED True)  # 標準を必須とする

実行可能ファイルとソースファイルの追加

ビルドが必要な実行可能ファイルと対応するソースファイルを指定します:

# 指定されたソースファイルを使用してプロジェクトに実行可能ファイルを追加
add_executable(MyExecutable main.cpp utility.cpp)

ディレクトリのインクルード

プロジェクトに異なるディレクトリのヘッダーファイルがある場合、それらのディレクトリを含めることができます:

# ディレクトリをインクルード
include_directories(include)

ライブラリのリンク

プロジェクトが依存するライブラリをリンクするには:

# ライブラリをリンク
target_link_libraries(MyExecutable PRIVATE mylib)

サブディレクトリの追加

複数のディレクトリに構造化された大規模なプロジェクトの場合、それぞれに独自の CMakeLists.txt があります:

# サブディレクトリを追加
add_subdirectory(subdir)

コンパイラオプションの設定

特定のコンパイラオプションを追加できます:

# コンパイルオプションを追加
add_compile_options(-Wall -Wextra -pedantic)

インストールルールの設定

プロジェクトのインストールルールを指定できます:

# インストールルール
install(TARGETS MyExecutable DESTINATION bin)
install(FILES MyHeader.hpp DESTINATION include)

ビルド設定の管理

デバッグやリリースなど、異なるビルド設定を管理できます:

# 設定に対する特定のプロパティを設定
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

条件文

異なるシナリオを処理するための条件を含めることができます:

if(WIN32)
  # Windows に特有のコマンド
  message(STATUS "Configuring on/for Windows")
  target_link_libraries(MyExecutable PRIVATE windows_specific_library)
endif()

完全な例

これらの要素を組み合わせると、シンプルな CMakeLists.txt は次のようになります:

cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

add_executable(MyExecutable main.cpp utility.cpp)
include_directories(include)

target_link_libraries(MyExecutable PRIVATE mylib)

if(WIN32)
  message(STATUS "Configuring on/for Windows")
  target_link_libraries(MyExecutable PRIVATE windows_specific_library)
endif()

install(TARGETS MyExecutable DESTINATION bin)
install(FILES MyHeader.hpp DESTINATION include)

このセットアップは、プロジェクトのビルド設定を明確で管理しやすく定義しており、プロジェクトの進化に伴って簡単に調整、拡張、維持できます。

                                                 エンジニアファーストの会社 株式会社CRE-CO
                            su_myat_phyu

参考

この記事が気に入ったらサポートをしてみませんか?