以下の内容はhttps://lipoyang.hatenablog.com/entry/2024/06/01/134944より取得しました。


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 : ターゲットの実行ファイル名と、インクルードするヘッダファイルのディレクトリを指定

pthreadなどのライブラリを使用

pthreadライブラリを使う場合

add_executable(hoge_app hoge_app.cpp)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(hoge_app PRIVATE Threads::Threads)

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

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 : カスタムコマンドの追加

参考記事


関連記事




以上の内容はhttps://lipoyang.hatenablog.com/entry/2024/06/01/134944より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14