Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
build:cmake:create-project [2022/07/01 23:44] naums [Ein erste Projekt] |
build:cmake:create-project [2022/09/22 19:58] (aktuell) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Ein Projekt anlegen ====== | ====== 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: | 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: | ||
| - | <code> | + | <code cmake> |
| cmake_minimum_required(VERSION 3.10) | cmake_minimum_required(VERSION 3.10) | ||
| Zeile 13: | Zeile 11: | ||
| </code> | </code> | ||
| - | ==== Das Projekt bauen ==== | + | ===== Das Projekt bauen ===== |
| Der Vorgang das Projekt nun zu übersetzen besteht aus zwei Schritten: | Der Vorgang das Projekt nun zu übersetzen besteht aus zwei Schritten: | ||
| Zeile 50: | Zeile 48: | ||
| Nun führen wir das Makefile normal aus, womit das Projekt übersetzt und gelinkt wird, und wir erhalten eine ''hello_world'' Executable. | 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 | + | ===== Die CMakeLists verstehen ===== |
| - | <code> | + | |
| - | file(GLOB C_FILES "*.cpp") | + | Die obige ''CMakeLists.txt'' beinhaltet drei Kommandos: |
| - | file(GLOB H_FILES "../../include/foo/*.h") | + | |
| + | <code cmake> | ||
| + | cmake_minimum_required(VERSION 3.10) | ||
| </code> | </code> | ||
| - | ===== Bibliotheken finden und linken ===== | + | Dies gibt die minimale Version von CMake an, mit der dieses CMakefile benutzt werden kann. Das wird vor allem dann interessant, wenn Features aktuellerer CMake-Versionen gebraucht werden. Es bietet sich für persönliche Projekte an, einfach die Version des installierten CMakes zu verwenden, für Projekte mit anderen Entwickler\*innen, sollte sich auf die minimal vorhandene Version über die vorhandenen Linux-Systeme hinweg geeinigt werden. Damit sind aber auch einige der aktuelleren Features ausgeschlossen, weil die mit einem älteren CMake nicht funktionieren. |
| - | FIXME | + | <code cmake> |
| - | <code> | + | project(HelloWorld) |
| - | find_package(Qt4 REQUIRED) | + | |
| </code> | </code> | ||
| - | <code> | + | Diese Zeile gibt dem Projekt einen beliebigen Projektnamen. |
| - | target_link_libraries(foo ${QT_LIBRARIES}) | + | |
| + | <code cmake> | ||
| + | add_executable(hello_world main.c) | ||
| </code> | </code> | ||
| + | |||
| + | Mit ''add_executable'' teilen wir CMake mit, dass wir eine ausführbare Datei erstellen wollen. Die hier nennen wir ''hello_world'' und sie wird aus der ''main.c'' erstellt. CMake weiß bereits, wie es aus einzelnen C-Dateien Programme erstellen kann, sodass es ausreicht CMake die benötigten Dateien mitzuteilen. | ||
| + | |||
| + | Dieses CMake-Projekt ist nicht sonderlich spannend, aber CMake kann noch ziemlich nützlich werden. | ||