Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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.