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.txt

 cmake_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 erstellen

 cmake.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 bauen

 cmake.exe 	--build .\\buildpath	^
		--verbose		^ 
		--clean-first		^
		--config Release 	^
		--target install

Online Hilfe

Eine erweiterte Einführung ist beim Linux-Magazin.de zu finden.

Stichworte (tags)