CMake für Einsteiger

Wie Sie Ihren Build-Prozess konfigurieren und optimieren

CMake für Einsteiger - Cover

CMake für Einsteiger ist mein insgesamt zweites Buch. Ich habe es bei tredition, eine Self-Publishing-Plattform, im August 2022 veröffentlicht. Anhand vieler Beispiele, die Sie sich über den linken Button „Github Code“ direkt anschauen können, versuche ich dem Leser die Funktionsweise und die richtige Verwendung von CMake näherzubringen. Sie können sich vor dem Kauf über die unteren Buttons eine Leseprobe und das Inhaltsverzeichnis anschauen.

Das Buch selbst können Sie direkt bei tredition oder bei einem anderen Buchhändler erwerben. Wenn Sie wollen, dass möglichst viel von Ihrem Geld bei mir ankommt, sollten Sie direkt bei tredition kaufen, dann fällt nämlich der Zwischenhändler weg und es bleibt sozusagen mehr für mich übrig. Wenn Sie das Buch lieber direkt am PC lesen möchten, können Sie das Buch auch als E-Book (PDF-Datei) kaufen.

Zusammenfassung

Die Dokumentation zu CMake ist sehr umfangreich, aber eben nicht gerade für einen Einsteiger geschrieben. Auch außerhalb der CMake Dokumentation ist es nicht so einfach einen Einstieg in CMake zu finden. Mit diesem Buch, dem vermutlich ersten Buch über CMake in deutscher Sprache, möchte ich den Menschen, die ihre ersten Schritte mit CMake machen, unterstützen. Es ist mit Sicherheit kein allumfassendes Werk, welches jeden Aspekt von CMake abdeckt. Aber es wird Ihnen die grundlegenden Befehle und Eigenschaften von CMake vermitteln. Sie werden verstehen, wie CMake denkt und funktioniert und werden dabei erkennen, wie Sie gewisse Dinge in CMake umsetzen können. Ich greife dabei auf eine Vielzahl von Beispielen zurück, die Sie gratis herunterladen und auf Ihrem Computer ausprobieren können.

Sie werden in diesem Buch zunächst damit beginnen zu erlernen, wie Sie einen Build-Prozess mit CMake aufziehen und einfache, ausführbare Dateien erstellen können. Dabei gehe ich auch auf unterschiedliche Betriebssysteme und die Wahl des Compilers ein. Darauf aufbauend erlernen Sie auch das Erstellen und Verlinken von Bibliotheken, das Einbinden von externem Code, das Testen von Code und vieles mehr. Nach der Lektüre dieses Buches werden Sie sich deutlich besser in der Welt von CMake zurechtfinden und sind dazu bereit, sich größeren CMake Projekten zu widmen.

Was Sie von diesem Buch erwarten können:

  • Viele Beispiele, die Ihnen die Funktionsweise und richtige Verwendung von CMake näher bringen.
  • Funktionierenden CMake Code auf jedem System, den Sie gratis herunterladen und verwenden können.
  • Eine einsteigerfreundliche Anleitung zum Arbeiten mit CMake.
  • Umfangreiche und vollständige Erklärungen zu allen Codebeispielen.
  • Klare visuelle Abgrenzungen zwischen Text, lauffähigem Code und kleineren Codeschnipseln.
  • Geprüfte Empfehlungen beim Arbeiten mit CMake.

Was Sie nicht von diesem Buch erwarten können:

  • Eine exakte Auflistung aller Befehle und Möglichkeiten in CMake.
  • Eine Schritt für Schritt Lösung für jedes erdenkliche Problem.
  • Tiefgreifende Erklärungen zu anderen Programmiersprachen wie C++.

Bisheriges Feedback und Anmerkungen

Auf Amazon habe ich eine 1-Sterne-Bewertung für mein Buch erhalten, auf die ich an dieser Stelle kurz eingehen möchte. Im Folgenden erst einmal die Rezension:

Nunja was soll man zum einzigen deutschsprachigen CMAKE Buch sagen. Man braucht es, zumindestens wenn man die Build-Prozesse vom ESP32 und Pico Pi verstehen möchte. Aber leider fehlen richtige Beispiele aus der Praxis, stattdessen überall „…“. Diese 3 Punkte verfolgen einen. Beispiele gibt es auf der GitHub-Seite wie versprochen keine, naja einen 3 Zeiler als CMakeLists.txt getarnt.
Die Klebung fängt sich an vom Umschlag zu lösen, nach einer Woche. Einige Seiten sehen aus, als ob „Toner“ fehlte.

Amazon.de, Rezensent: Thomas

Bei ESP32 und Pico Pi handelt es sich um Mikrocontroller, mit denen der Rezensent offensichtlich arbeitet. Es stimmt natürlich, dass es speziell zu Mikrocontrollern keine Beispiele in meinem Buch gibt. Was ich in einem Buch für Einsteiger persönlich auch etwas zu speziell finde. Ich habe aber auch per E-Mail von einem anderen Leser die Rückmeldung erhalten, dass manche Beispiele vielleicht doch etwas zu praxisfern sind. Ich werde diesen Punkt in einer möglichen neuen Auflage definitiv berücksichtigen und das ein oder andere Beispiel überarbeiten.

Das Problem, das der Rezensent mit den 3 Punkten hat, kann ich persönlich nur schwer nachvollziehen. Diese werden lediglich dazu eingesetzt, redundante Ausgaben abzukürzen und sind dazu ein mir bekanntes, gängiges Stilmittel.

Bei der erwähnten GitHub-Seite kam es wohl zu einer Verwechslung. Ich hatte wohl versehentlich einen Fork einer ganz frühen Version des GitHub-Repositorys erstellt, auf die der Rezensent, ich mutmaße über Google, gestoßen ist. Ich habe diesen Fork inzwischen gelöscht, sodass hoffentlich nicht noch einmal zu so einer Verwechslung kommt. Wie Sie über den obigen Button testen können, ist das GitHub-Repository vollständig und auch der Link im Buch ist der Richtige.

Hier gab es wohl tatsächlich eine schlechte Charge des Buches, die bei Amazon liegt. Auch der oben genannte Leser berichtet mir per E-Mail von diesem Problem. Hier kann ich leider nur bitten, das Buch zurückzuschicken und ein neues zu verlangen, auch wenn das natürlich sehr ärgerlich ist. Dies klappte beim eben genannten Leser problemlos. Ich habe den Verlag inzwischen auch über das Problem informiert und hoffe, dass es nicht wieder vorkommt.

Des Weiteren habe ich die Rückmeldung über relativ häufige den/denn Fehler in meinem Buch erhalten, welche ich inzwischen korrigiert habe. Amazon hatte noch einige Bücher mit der alten Version auf Lager. Inzwischen hat Amazon jedoch einige Bücher nachgeordert, sodass Sie auch dort inzwischen die neuste Version erhalten sollten. Alle anderen Händler bestellen meines Wissens nach „On-Demand“, das heißt, Sie erhalten automatisch die neuste Version des Buches.

Quellen

[1] boost.org. Getting Started Guide Boost. url: https://www.boost.org/doc/libs/1_76_0/more/getting_started/index.html

[2] catchorg. Catch2. url: https://github.com/catchorg/Catch2

[3] cmake.org. Add Custom Target. url: https://cmake.org/cmake/help/latest/command/add_custom_target.html

[4] cmake.org. C++ features. url: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html

[5] cmake.org. CMake Dokumentation Introduction. url: https://cmake.org/cmake/help/latest/

[6] cmake.org. CMake Policies. url: https://cmake.org/cmake/help/latest/command/cmake_policy.html

[7] cmake.org. cmake-developer. url: https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html

[8] cmake.org. cmake-properties. url: https://cmake.org/cmake/help/latest/manual/cmake-properties.7.html

[9] cmake.org. Dokumentation des find_package() Befehls. url: https://cmake.org/cmake/help/latest/command/find_package.html

[10] cmake.org. Dokumentation des find_package(boost) Befehls. url: https://cmake.org/cmake/help/latest/module/FindBoost.html

[11] cmake.org. FetchContent. url: https://cmake.org/cmake/help/latest/module/FetchContent.html

[12] cmake.org. file. url: https://cmake.org/cmake/help/latest/command/file.html

[13] cmake.org. find_path. url: https://cmake.org/cmake/help/latest/command/find_path.html

[14] cmake.org. find_program. url: https://cmake.org/cmake/help/latest/command/find_program.html

[15] cmake.org. FindDoxygen. url: https://cmake.org/cmake/help/latest/module/FindDoxygen.html

[16] cmake.org. FindPackageHandleStandardArgs. url: https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html

[17] cmake.org. FindPkgConfig. url: https://cmake.org/cmake/help/latest/module/FindPkgConfig.html

[18] cmake.org. Generator Expressions. url: https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html

[19] cmake.org. GoogleTest. url: https://cmake.org/cmake/help/git-stage/module/GoogleTest.html

[20] cmake.org. if. url: https://cmake.org/cmake/help/latest/command/if.html

[21] cmake.org. list. url: https://cmake.org/cmake/help/latest/command/list.html

[22] cmake.org. MACOSX_BUNDLE. url: https://cmake.org/cmake/help/latest/prop_tgt/MACOSX_BUNDLE.html

[23] cmake.org. math. url: https://cmake.org/cmake/help/latest/command/math.html

[24] cmake.org. message. url: https://cmake.org/cmake/help/latest/command/message.html

[25] cmake.org. Modules. url: https://cmake.org/cmake/help/latest/manual/cmake-modules.7.html

[26] cmake.org. project. url: https://cmake.org/cmake/help/latest/command/project.html

[27] cmake.org. Variablen. url: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html

[28] cmake.org. WIN32_EXECUTABLE. url: https://cmake.org/cmake/help/latest/prop_tgt/WIN32_EXECUTABLE.html

[29] CodingWithMagga. CMake Tutorial – #05 Cache Variablen (deutsch/german). url: https://youtu.be/qxxCQMaFVZE

[30] git. Git Submodules. url: https://git-scm.com/book/en/v2/Git-Tools-Submodules

[31] git. git Webseite. url: https://git-scm.com/

[32] github.com/microsoft. GSL: Guidelines Support Library. url: https://github.com/microsoft/GSL

[33] GNOME. glib. url: https://github.com/GNOME/glib

[34] Google. GoogleTest. url: https://github.com/google/googletest

[35] Google. GoogleTest User’s Guide. url: https://google.github.io/googletest/

[36] Dimitri van Heesch. Doxygen. url: https://www.doxygen.nl/index.html

[37] Schreiner Henry u. a. Installing CMake. url: https://cliutils.gitlab.io/modern-cmake/chapters/intro/installing.html

[38] Kitware. Download CMake. url: https://cmake.org/download/

[39] LLVM. Clang: a C language family frontend for LLVM. url: https://clang.llvm.org/

[40] Evan Martin. Ninja. url: https://ninja-build.org/

[41] Microsoft. Visual Studio Webseite. url: https://visualstudio.microsoft.com/de/

[42] microsoft.com. Exporting from a DLL. url: https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll?view=msvc-170

[43] opencv.org. Introduction to OpenCV. url: https://docs.opencv.org/4.5.3/df/d65/tutorial_table_of_content_introduction.html

[44] regex101.com. regular expressions. url: https://regex101.com

[45] Alex Reinking. CTest reports no tests found without -C on multi-config generators. url: https://gitlab.kitware.com/cmake/cmake/-/issues/20283

[46] Craig Scott. Professional CMake: A Practical Guide. 2018. url: https://crascit.com/professional-cmake/

[47] stackoverflow.com. What are the possible values for the LANGUAGE variable in CMAKE. url: https://stackoverflow.com/questions/24534384/what-are-the-possible-values-for-the-language-variable-in-cmake

[48] Bjarne Stroustrup und Herb Sutter. C++ Core Guidelines. url: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines

[49] Wikipedia. Software versioning. url: https://en.wikipedia.org/wiki/Software_versioning

[50] Wikipedia. Versionsnummer. url: https://de.wikipedia.org/wiki/Versionsnummer

Abonnieren
Benachrichtige mich bei
guest
5 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Manuel
Manuel
1 Jahr zuvor

Super!! Das Buch scheint echt nicht schlecht zu sein. Habe es mir schon digital gekauft und die ersten Kapitel schon durch 🙂

Rainer
Rainer
1 Jahr zuvor

Ich habe mir mal das EBook gekauft und werde es in den nächsten Tagen durcharbeiten.
Schön fände ich ein Bundle aus Buch+EBook.

Nach oben scrollen
WordPress Cookie Plugin von Real Cookie Banner