CMakeLists.txtの書き方

基本の書き方

cmake_minimum_required(VERSION 3.13)
project(hoge_project CXX)
add_executable(hoge hoge.cpp piyo.cpp)
  • cmake_minimum_required : CMakeの最小要求バージョンを指定
  • project : プロジェクト名と使用言語を指定 (CXXはC++)
  • add_executable : ターゲットの実行ファイル名とソースファイル名(複数可)を指定

ビルドと実行

ソース元にカレントディレクトリを、ビルド先に ./build を指定

cmake -S . -B build

ビルドを実行。./build/hoge がビルドされる。

cmake --build build

ビルドのクリーン

cmake --build build --target clean

ディレクトリを階層にする

ディレクトリのCMakeLists.txt

cmake_minimum_required(VERSION 3.13)
project(hoge CXX)
add_subdirectory(hoge1)
add_subdirectory(hoge2)
add_subdirectory(hoge3)

サブディレクトリのCMakeLists.txt

add_executable(hoge1 hoge1.cpp)

ライブラリの作成とリンク

ディレクトリのCMakeLists.txt
ライブラリのサブディレクトリ名とアプリケーションのサブディレクトリ名を指定

cmake_minimum_required(VERSION 3.13)
project(hoge CXX)
add_subdirectory(hoge_lib_dir)
add_subdirectory(hoge_app_dir)

ライブラリのサブディレクトリのCMakeLists.txt

add_library(hoge_lib hoge_lib.cpp)
  • add_library : ターゲットのライブラリ名とソースファイル名を指定

アプリケーションのサブディレクトリのCMakeLists.txt

add_executable(hoge_app hoge_app.cpp)
target_link_libraries(hoge_app PRIVATE hoge_lib)
target_include_directories(hoge_app PRIVATE ${CMAKE_SOURCE_DIR}/hoge_lib_dir)
  • target_link_libraries : ターゲットの実行ファイル名と、リンクするライブラリ名を指定
  • target_include_directories : ターゲットの実行ファイル名と、インクルードするヘッダファイルのディレクトリを指定

リソースファイルなどをコピー

add_custom_command(
    TARGET hoge_app POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    ${CMAKE_CURRENT_SOURCE_DIR}/piyo.png $<TARGET_FILE_DIR:hoge_app>
)
  • add_custom_command : カスタムコマンドの追加

参考記事


関連記事