Eine schnelle C++-Vorlage für moderne CMake-Projekte, die als benutzerfreundlicher Ausgangspunkt dienen soll.
Dies ist meine persönliche Meinung zu einem solchen Vorlagentyp. Daher verwende ich möglicherweise nicht die Best Practices, oder Sie sind möglicherweise nicht mit meiner Vorgehensweise einverstanden. Wir freuen uns über jedes Feedback!
Moderne CMake -Konfiguration und -Projekt, das nach meinem besten Wissen die Best Practices nutzt,
Ein Beispiel für eine Clang-Format -Konfiguration, inspiriert vom Google- Basismodell, mit geringfügigen Änderungen. Dies dient nur als Ausgangspunkt, da der Codierungsstil eine subjektive Angelegenheit ist und es jedem freisteht, ihn entweder zu löschen (für die LLVM- Standardeinstellung) oder eine eigene Alternative bereitzustellen.
Integration statischer Analysegeräte mit Clang-Tidy und Cppcheck , wobei ersteres die Standardoption ist,
Doxygen- Unterstützung über die Option ENABLE_DOXYGEN
, die Sie aktivieren können, wenn Sie sie verwenden möchten.
Unterstützung für Unit-Tests über GoogleTest (mit der Option, GoogleMock zu aktivieren) oder Catch2 .
Codeabdeckung , aktiviert durch Verwendung der Option ENABLE_CODE_COVERAGE
, durch Codecov CI-Integration,
Unterstützung von Paketmanagern mit Conan und Vcpkg über ihre jeweiligen Optionen
CI-Workflows für Windows, Linux und MacOS mit GitHub Actions unter Nutzung der Caching-Funktionen, um eine minimale Laufzeit sicherzustellen,
.md-Vorlagen für: README , Contributing Guidelines , Issues und Pull Requests ,
Permissive Lizenz , damit Sie es so einfach wie möglich integrieren können. Die Vorlage ist unter der Unlicense-Lizenz lizenziert.
Optionen zum Erstellen als reine Header-Bibliothek oder ausführbare Datei, nicht nur als statische oder gemeinsam genutzte Bibliothek.
Ccache- Integration zur Beschleunigung der Wiederherstellungszeiten
Mit diesen Anweisungen erhalten Sie eine Kopie des Projekts, die zu Entwicklungs- und Testzwecken auf Ihrem lokalen Computer ausgeführt werden kann.
Dieses Projekt ist nur als Vorlage gedacht, daher können Versionen der verwendeten Software geändert werden, um sie besser an die Bedürfnisse des/der Entwickler(s) anzupassen. Wenn Sie die Vorlage unverändert verwenden möchten, also die hier empfohlenen Versionen verwenden möchten, benötigen Sie Folgendes:
CMake v3.15+ – gefunden unter https://cmake.org/
C++-Compiler – muss mindestens den C++17- Standard unterstützen, also MSVC , GCC , Clang
Hinweis: Sie müssen CMake auch einen unterstützten Generator bereitstellen können.
Es ist ziemlich einfach, das Projekt zu installieren. Sie müssen es lediglich von GitHub klonen oder daraus ein neues Repository generieren (auch auf GitHub ).
Wenn Sie das Repository klonen möchten, anstatt es zu generieren, müssen Sie einfach Folgendes ausführen:
git clone https://github.com/filipdutescu/modern-cpp-template/
Nachdem Sie mit einer der oben genannten Methoden eine Kopie des Projekts erstellt haben, erstellen Sie einen neuen Ordner im Ordner include/
mit dem Namen Ihres Projekts. Bearbeiten Sie cmake/SourcesAndHeaders.cmake
um Ihre Dateien hinzuzufügen.
Sie müssen außerdem die Datei cmake/ProjectConfig.cmake.in
umbenennen, damit sie mit dem genauen Namen Ihres Projekts beginnt. Wie cmake/MyNewProjectConfig.cmake.in
. Sie sollten die gleichen Änderungen auch in den bereitgestellten GitHub-Workflows vornehmen, insbesondere .github/workflows/ubuntu.yml
, in dem Sie die CMake-Option -DProject_ENABLE_CODE_COVERAGE=1
durch -DMyNewProject_ENABLE_CODE_COVERAGE=1
ersetzen sollten.
Ändern Sie abschließend "Project"
von CMakeLists.txt
, von
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)
auf den genauen Namen Ihres Projekts , d. h. unter Verwendung des vorherigen Namens wird daraus:
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
)
Um ein bereits erstelltes Projekt zu installieren, müssen Sie das install
mit CMake ausführen. Zum Beispiel:
cmake --build build --target install --config Release
# a more general syntax for that command is:
cmake --build < build_directory > --target install --config < desired_config >
Um das Projekt zu erstellen, müssen Sie nach der korrekten Installation des Projekts lediglich eine ähnliche CMake- Routine wie die folgende ausführen:
mkdir build/ && cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target install
Hinweis: Der benutzerdefinierte
CMAKE_INSTALL_PREFIX
kann weggelassen werden, wenn Sie am Standardinstallationsort installieren möchten.
Weitere Optionen, die Sie für das Projekt festlegen können, finden Sie in der Datei cmake/StandardSettings.cmake
. Für bestimmte Optionen ist möglicherweise eine zusätzliche Konfiguration in den jeweiligen *.cmake
Dateien erforderlich (z. B. Conan benötigt CONAN_REQUIRES
und möglicherweise die Einrichtung von CONAN_OPTIONS
, damit es ordnungsgemäß funktioniert; beide sind in der Datei cmake/Conan.cmake
festgelegt).
Um Dokumentation für das Projekt zu erstellen, müssen Sie den Build für die Verwendung von Doxygen konfigurieren. Dies lässt sich leicht bewerkstelligen, indem Sie den oben gezeigten Arbeitsablauf wie folgt ändern:
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
Hinweis: Dadurch wird ein
docs/
-Verzeichnis im Stammverzeichnis des Projekts generiert.
Standardmäßig verwendet die Vorlage Google Test für Unit-Tests. Unit-Tests können in den Optionen deaktiviert werden, indem ENABLE_UNIT_TESTING
(aus cmake/StandardSettings.cmake) auf „false“ gesetzt wird. Um die Tests auszuführen, verwenden Sie einfach CTest aus dem Build-Verzeichnis und übergeben Sie die gewünschte Konfiguration, für die Tests ausgeführt werden sollen. Ein Beispiel für dieses Verfahren ist:
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)
Sollte ggf. hier dargestellt werden.
Sollte ggf. hier dargestellt werden.
Bitte lesen Sie CONTRIBUTING.md für Einzelheiten darüber, wie Sie Mitwirkender werden können und wie Sie Pull-Anfragen an uns senden.
Dieses Projekt nutzt SemVer zur Versionierung. Eine Liste der vorhandenen Versionen finden Sie in den Veröffentlichungen des Projekts.
Dieses Projekt ist unter der Unlicense-Lizenz lizenziert – Einzelheiten finden Sie in der LIZENZ-Datei