今回やること
- CMakeの導入
- github actionでのcmakeテストの追加
Cmakeとは
Makeファイルなどのプロジェクトファイル自動生成ツールです.
最近の, どのプロジェクトにも大抵用意されてありますね.
勝手に作るCMake入門 その1 基本的な使い方 - かみのメモ に詳細な説明があります.
CMake
フォルダ構成
GitHub - nariaki3551/master_mind_cpp at feature/cmake
master_mind_cpp $ tree ./ ./ ├── README.md └── src ├── def.h ├── main.cpp ├── ... └── utils.h
main.cppを分割しました. main.cppが実行ファイルで, この中で他のヘッダーファイルをimportして使用しています.
CMakeLists.txtの作成
簡単なものを作成します.
ルートディレクトリと, srcディレクトリにそれぞれCMakeLists.txtとして コンパイルの仕様書を作成します.
ルートディレクトリには下記を作成.
cmake_minimum_required(VERSION 3.1) project(MasterMind CXX) add_subdirectory(src) # srcディレクトリをcmake管理に追加
srcディレクトリには
add_executable( # main.cppを使って, mastermindをビルド mastermind main.cpp ) target_compile_options( # コンパイルオプション -Wall を追加 mastermind PUBLIC -Wall ) target_compile_features( # stdバージョン(-std=c++17)指定 mastermind PUBLIC cxx_std_17 )
を配置.
master_mind_cpp $ tree ./ ./ ├── README.md ├── CMakeLists.txt # 追加!! └── src ├── CMakeLists.txt # 追加!! ├── def.h ├── main.cpp ├── ... └── utils.h
ビルド
おなじみの
$ mkdir build; cd build; cmake ..; make
-- The CXX compiler identification is AppleClang 12.0.5.12050022 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /xxx/master_mind_cpp/build [ 50%] Building CXX object src/CMakeFiles/mastermind.dir/main.cpp.o [100%] Linking CXX executable mastermind [100%] Built target mastermind
./src/build/src/mastermind
というバイナリが生成されればビルド完了です.
バイナリ生成場所の指定
バイナリを生成する場所を変えるには, CMAKE_RUNTIME_OUTPUT_DIRECTORY
変数を編集します.
cmake .. -DCMAKE_RUNTIME_OUTPUT_DIRECTORY="xxx"
で設定できます.
デフォルト値を指定する場合はルートディレクトリのCMakeLists.txtに下記のように追記します.
cmake_minimum_required(VERSION 3.1) project(MasterMind CXX) # setting of CMAKE_RUNTIME_OUTPUT_DIRECTORY if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) # 変数が設定されていなければ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) # 設定!! endif() # add mastermind add_subdirectory(src)
GitHub action - CMake テスト
GitHubにはactionという, pushやpull requestのたびに動く自動テスト機能があります. ビルドテストや単体テストが実行され, 問題があれば赤いチェックマークが表示されます.
画像の一番右にありますね.
テンプレートが用意されてあります. 画像右のCMakeを使います.
今回はデフォルトのものをそのまま使います. もしサードパーティのソフトを利用してコンパイルする場合は,
そのインストール処理もこのyamlファイルに記載する必要があります.
また一番上
on: push: branches: [ main ] # mainブランチへのpush時 pull_request: branches: [ main ] # mainブランチへのpush request時
の部分を
on: [push, pull_request ]
に変えると, 全てのpush, pull_request実行時にこのテストが実行されるように変更できます.
右上のstart commit で pushするとok.
動いていますね.
まとめ
CMakeを導入しました. またgithub actionでの自動CMakeビルドテストを追加しました.
コード
参考
他の記事
- 次の記事
- 前の記事
- 一覧 mastermind カテゴリーの記事一覧 - サブロウ丸