基本の書き方
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)
- add_subdirectory : サブディレクトリ名を指定
サブディレクトリの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 : カスタムコマンドの追加
参考記事