updated: | 2023 02. March |
published: | 2021 01. July |
Cmake
Plattformunabhängiges Werkzeug zum erstellen von Software.Was ist Cmake?
CMake - das “C” steht für Crossplattform - ist ein plattformunabhängiges Werkzeug zum erstellen, testen und packen von Software. Obwohl es plattformunabhängig ist, benötigt es jedoch einen Compiler, Linker und ein Make Programm. Die hier aufgeführten Beispiele verwenden die für Windows bereitgestellte GNU-GCC-Compiler-Suite MinGW oder TDM-GCC .
Zur Steuerung benötigt CMake die Datei CMakeLists.txt
. Die Datei beinhaltet einen Satz an Instruktionen und Direktiven zum beschreiben der Quellen und des Zieles (z.B. ausführbare Datei, erstellen einer Bibliothek, etc.).
Cmake Download und Installation
Auf der Projektseite von CMake
die entsprechende Version als Zip-Datei herunter laden und in ein Verzeichnis (z.B. c:\dev\cmake
) entspacken. Dann werden die entsprechenden Verzeichnisse in der Umgebung gesetzt.
cmd.exe# setze Path zu Cmake set PATH=%PATH%;C:\\Verzeichnis-zum-Cmake\\bin # setze Path zum MinGW oder TDM-GCC Compiler set PATH=%PATH%;C:\\Verzeichnis-zum-Compiler\\bin
Ein kleines Beispiel
Lege die Dateien main.cpp
und CMakeLists.txt
in einem Verzeichnis (z.B. source
) an.
main.cpp#include <iostream> int main() { std::cout << "Hello World!\n"; return 0; }
CMakeLists.txtcmake_minimum_required (VERSION 3.21.0-rc-1) set( CMAKE_CXX_FLAGS "-std=gnu++14 -Wall -fexceptions -g -m32 -O2 -static-libstdc++ -static-libgcc -static" ) message( CHECK_START "Check C FLAG is initialized" ) message( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} ) message( STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} ) message( STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE} ) message( STATUS "CMAKE_CXX_FLAGS_RELEASE: " ${CMAKE_CXX_FLAGS_RELEASE} ) project (HELLO) add_executable(hello hello.cpp) # Installationsverzeichnis install(TARGETS hello DESTINATION bin)
In einem ersten Schritt werden die Eingangsdateien für die jeweilige Plattform generiert.
Mit der Option -G "MinGW Makefile"
wird das native Buildsystem festgelegt, welches der Plattform zugrunde liegt.
1. Makefiles erstellencmake.exe -G "MinGW Makefiles" ^ -B .\\buildpath ^ -S .\\sourcepath ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_INSTALL_PREFIX=.\\fertig
Tip: In einem Windowssript (*.bat) können Zeilenumbrüche zu einem Befehl mit [^] markiert. Damit werden Parameter eines Befehls übersichtlicher dargestellt.
Der zweite Schritt erzeugt das Projekt und installiert die fertigen Dateien in dem durch die Option -DCMAKE_INSTALL_PREFIX=.\fertig
angegebenem Verzeichnis.
2. Projekt bauencmake.exe --build .\\buildpath ^ --verbose ^ --clean-first ^ --config Release ^ --target install
Online Hilfe
Eine erweiterte Einführung ist beim Linux-Magazin.de zu finden.