CMake Series
CMakeシリーズ
CMakeで詰まりやすい設定や構成を、用途別の解決策としてまとめていきます。
記事
CMakeでsrcとappを分けるときに設定しておくべきこと
CMakeでsrcとappを分けたいときに、add_subdirectory、add_library、target_link_librariesをどう設定するかを実用例ベースで整理します。
CMakeのクロスコンパイルでfind_packageがホストを見に行くときの設定
CMakeのクロスコンパイルでfind_packageやfind_libraryがホスト環境を見に行くときに確認するCMAKE_FIND_ROOT_PATH_MODE_*の設定を整理します。
CMakeのクロスコンパイルでsysrootを設定する理由
CMakeのクロスコンパイルでCMAKE_SYSROOTを設定する理由、ヘッダーやライブラリをターゲット環境から探す考え方を整理します。
CMakeでクロスコンパイルするときのtoolchain fileの書き方
CMakeでクロスコンパイルするときに使うtoolchain fileの最小構成、CMAKE_SYSTEM_NAME、CMAKE_C_COMPILER、CMAKE_CXX_COMPILERの設定を整理します。
CMakeでFetchContentとfind_packageを使い分ける目安
CMakeで外部ライブラリを扱うときに、FetchContentとfind_packageをどう使い分けるか、プロジェクト内で依存関係を固定する場合と環境に任せる場合で整理します。
CMakePresets.jsonで最初に設定しておくべきこと
CMakePresets.jsonでconfigurePreset、buildPreset、binaryDir、cacheVariablesを設定して、ビルド手順を共有しやすくする方法を整理します。
CMakeでCTestを使うときに最初に設定しておくべきこと
CMakeでテストを追加するときに、enable_testing、add_test、ctestの実行方法を最小構成で整理します。
CMakeで実行ファイルとライブラリをinstallするときの設定
CMakeでinstall(TARGETS)を使って実行ファイル、ライブラリ、ヘッダーを配置する基本設定を整理します。
CMakeで実行ファイルの出力先を分けるときの設定
CMakeでRUNTIME_OUTPUT_DIRECTORY、LIBRARY_OUTPUT_DIRECTORY、ARCHIVE_OUTPUT_DIRECTORYを使って成果物の出力先を整理する方法をまとめます。
CMakeで共有ライブラリのRPATHを設定するときに見ること
CMakeで共有ライブラリを使うときに実行時ライブラリが見つからない問題と、BUILD_RPATH、INSTALL_RPATHの基本を整理します。
CMakeでコンパイルオプションをtargetごとに設定する方法
CMakeで警告オプションや最適化オプションをtarget_compile_optionsでターゲットごとに設定する考え方を整理します。
扱う予定のケース
- srcとappを分けてビルドしたい
- クロスコンパイル用のtoolchain fileを書きたい
- sysrootやfind_packageの探索先を整理したい
- CMakePresets.jsonでビルド設定を共有したい
- 外部ライブラリをfind_packageまたはFetchContentで扱いたい