Dies ist eine alte Version des Dokuments!


Ein Projekt anlegen

Ein erste Projekt

Um CMake zu ermöglichen unser Projekt zu bauen müssen wir beschreiben wie unser Projekt übersetzt werden muss. Dazu erstellen wir eine Datei mit dem Namen CMakeLists.txt und beschreiben in einer für CMake verständlichen Skriptsprache, alle benötigten Aspekte unseres Programms. Für ein einfache Hello-World Programm (einzige Quelldatei ist main.c) kann diese Datei zum Beispiel so ausschauen:

cmake_minimum_required(VERSION 3.10)

project(HelloWorld)

add_executable(hello_world main.c)

Das Projekt bauen

Der Vorgang das Projekt nun zu übersetzen besteht aus zwei Schritten:

  1. Erzeugen eines Makefiles mit Cmake
  2. Übersetzen des Projekts mithilfe des Makefiles

Andere Ziele (bspw. Visual Studio Projektdateien) anstelle von Makefiles sind ebenfalls vorhanden.

Dieses Projekt bauen wir wie folgt. Üblicherweise erstellen wir uns im Projektordner einen neuen Ordner build. Dort wechseln wir hinein und führen das CMake-Programm aus:

cmake ..

CMake sucht nun im übergeordneten Verzeichnis (..) nach einer CMakeLists.txt, interpretiert sie, und legt eine Makefile an, die das Projekt entsprechend kompilieren soll. Wenn alles gut läuft, könnte die Ausgabe von CMake folgendermaßen aussehen:

-- The C compiler identification is GNU 12.1.0
-- The CXX compiler identification is GNU 12.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/naums/test/build

Hier wird der C-Compiler erkannt (GCC 12.1.0), ein paar Compilerfeatures probiert und am Ende das Projekt konfiguriert und ein Makefile generiert. Das build-Verzeichnis sieht nun so aus:

$ ls
🗋 cmake_install.cmake  🗋 CMakeCache.txt  🗁 CMakeFiles  🗋 Makefile

Nun führen wir das Makefile normal aus, womit das Projekt übersetzt und gelinkt wird, und wir erhalten eine hello_world Executable.

Quelldateien angeben

FIXME

file(GLOB C_FILES   "*.cpp")
file(GLOB H_FILES "../../include/foo/*.h")

Bibliotheken finden und linken

FIXME

find_package(Qt4 REQUIRED)
target_link_libraries(foo ${QT_LIBRARIES})