最新の CMake プロジェクト用の簡単な C++ テンプレートで、使いやすい開始点となることを目的としています。
これは、この種のテンプレートに対する私の個人的な見解です。したがって、私がベスト プラクティスを使用しない可能性や、私のやり方に同意しない可能性があります。あらゆるフィードバックをお待ちしております。
最新のCMake構成とプロジェクト。私の知る限り、ベスト プラクティスが使用されています。
基本のGoogleモデルからインスピレーションを受け、若干の調整を加えたClang-Format構成の例。これは出発点としてのみ目的とされており、コーディング スタイルは主観的な問題であるため、誰もが自由に削除するか ( LLVM のデフォルトの場合)、独自の代替案を提供することができます。
静的アナライザーのClang-TidyおよびCppcheckとの統合 (前者はデフォルトのオプション)
ENABLE_DOXYGEN
オプションによるDoxygenサポート (使用したい場合に有効にできます)
GoogleTest ( GoogleMock を有効にするオプション付き) またはCatch2による単体テストのサポート、
コード カバレッジ は、 Codecov CI 統合を通じてENABLE_CODE_COVERAGE
オプションを使用して有効化されます。
それぞれのオプションによる、 ConanおよびVcpkgによるパッケージ マネージャーのサポート
GitHub Actionsを使用したWindows、Linux、MacOS 用の CI ワークフロー、キャッシュ機能を利用して実行時間を最小限に抑え、
.md テンプレート: README 、貢献ガイドライン、問題とプル リクエスト、
できるだけ簡単に統合できるようにするための寛容なライセンス。テンプレートはアンライセンスに基づいてライセンスされています。
単なる静的ライブラリまたは共有ライブラリではなく、ヘッダーのみのライブラリまたは実行可能ファイルとしてビルドするオプション。
再構築時間を短縮するためのCcache統合
これらの手順により、開発とテストの目的で、プロジェクトのコピーをローカル マシン上で起動して実行できるようになります。
このプロジェクトは単なるテンプレートであるため、使用するソフトウェアのバージョンは開発者のニーズに合わせて変更できます。テンプレートをそのまま使用する場合、つまりここで推奨されているバージョンを使用する場合は、次のものが必要です。
CMake v3.15+ - https://cmake.org/ にあります
C++ コンパイラ- 少なくともC++17標準、つまりMSVC 、 GCC 、 Clangをサポートする必要があります。
注:サポートされているジェネレーターをCMakeに提供できる必要もあります。
プロジェクトのインストールは非常に簡単です。必要なのは、GitHub からクローンを作成するか、そこから ( GitHub上でも) 新しいリポジトリを生成することだけです。
リポジトリから生成するのではなく、リポジトリのクローンを作成したい場合は、以下を実行するだけです。
git clone https://github.com/filipdutescu/modern-cpp-template/
上記のいずれかの方法でプロジェクトのコピーの取得が完了したら、 include/
フォルダー内にプロジェクトの名前を付けて新しいフォルダーを作成します。 cmake/SourcesAndHeaders.cmake
を編集してファイルを追加します。
また、 cmake/ProjectConfig.cmake.in
ファイルの名前を、プロジェクトの正確な名前で始まるように変更する必要があります。 cmake/MyNewProjectConfig.cmake.in
など。提供されている GitHub ワークフロー、特に.github/workflows/ubuntu.yml
にも同じ変更を加える必要があります。この変更では、CMake オプション-DProject_ENABLE_CODE_COVERAGE=1
を-DMyNewProject_ENABLE_CODE_COVERAGE=1
に置き換える必要があります。
最後に、 CMakeLists.txt
の"Project"
を次のように変更します。
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)
プロジェクトの正確な名前に変更します。つまり、以前の名前を使用すると、次のようになります。
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
)
すでにビルドされているプロジェクトをインストールするには、CMake でinstall
ターゲットを実行する必要があります。例えば:
cmake --build build --target install --config Release
# a more general syntax for that command is:
cmake --build < build_directory > --target install --config < desired_config >
プロジェクトをビルドするには、プロジェクトを正しくインストールした後、以下のようなCMakeルーチンを実行するだけです。
mkdir build/ && cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target install
注:デフォルトのインストール場所にインストールする場合は、カスタム
CMAKE_INSTALL_PREFIX
省略できます。
プロジェクトに設定できるその他のオプションは、 cmake/StandardSettings.cmake
ファイルにあります。特定のオプションについては、それぞれの*.cmake
ファイルで追加の構成が必要になる場合があります (つまり、Conan にはCONAN_REQUIRES
必要であり、正しく動作させるにはCONAN_OPTIONS
のセットアップが必要な場合があります。この 2 つはcmake/Conan.cmake
ファイルで設定されます)。
プロジェクトのドキュメントを生成するには、Doxygen を使用するようにビルドを構成する必要があります。これは、上記のワークフローを次のように変更することで簡単に実行できます。
mkdir build/ && cd build/
cmake .. -D < project_name > _ENABLE_DOXYGEN=1 -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target doxygen-docs
注:これにより、プロジェクトのルート ディレクトリに
docs/
ディレクトリが生成されます。
デフォルトでは、テンプレートは単体テストに Google Test を使用します。単体テストは、オプションでENABLE_UNIT_TESTING
(cmake/StandardSettings.cmake から) を false に設定することで無効にできます。テストを実行するには、ビルド ディレクトリから CTest を使用し、テストを実行する対象の構成を渡すだけです。この手順の例は次のとおりです。
cd build # if not in the build directory already
ctest -C Release # or `ctest -C Debug` or any other configuration you wish to test
# you can also run tests with the `-VV` flag for a more verbose output (i.e.
# GoogleTest output as well)
該当する場合は、ここに提示する必要があります。
該当する場合は、ここに提示する必要があります。
コントリビューターになる方法とプル リクエストを送信するプロセスの詳細については、CONTRIBUTING.md をご覧ください。
このプロジェクトでは、バージョン管理に SemVer を使用します。既存のバージョンのリストは、プロジェクトのリリースに記載されています。
このプロジェクトは Unlicense に基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください