Der Cache
Ruft der Programmierer im obigen Beispiel noch einmal »make« auf, passiert mehr oder weniger nichts:
~/src/myproj-build $ make
[ 60%] Built target util
[100%] Built target fooapp
Bei einer Änderung an einer der »CMakeLists.txt«-Dateien veranlasst Make von sich aus einen automatischen Neustart von Cmake, um die entsprechenden Makefiles neu zu erzeugen:
$ touch ~/src/myproj/CMakeLists.txt
$ make
-- Configuring done
-- Generating done
-- Build files have been written to: ~/src/myproj-build
[ 60%] Built target util
[100%] Built target fooapp
Die Meldungen »Configuring done« und »Generating done« generiert Cmake beim Ausführen der »CMakeLists.txt«. Der Entwickler muss Cmake also prinzipiell nur ein einziges Mal zum initialen Erzeugen der Makefiles explizit ausführen. Die erzeugten Makefiles enthalten dann Regeln, um Cmake erneut aufzurufen, wenn sich eine der »CMakeLists.txt« geändert hat.
Übliche Ausgaben wie etwa "Checking for working C Compiler" fehlen, denn die Ergebnisse dieser Tests hat Cmake in einer Cachedatei namens »CMakeCache.txt« gespeichert. Bei wiederholten Aufrufen verwendet Cmake die Werte aus dem Cache, außer wenn der Eintrag den String »NOTFOUND« enthält. Dann führt Cmake den Test erneut durch. »CMakeCache.txt« speichert auch das Quelltextverzeichnis und das Buildverzeichnis sowie den verwendeten Generator, also beispielsweise »Unix Makefiles« oder »KDevelop3«.
Wer von Makefiles auf Kdevelop-Projekte umsteigen möchte, muss entweder ein neues Buildverzeichnis anlegen oder die »CMakeCache.txt« löschen, da Cmake sonst deren Einstellungen erneut verwenden würde. Wie erwähnt legt die Cmake-Variable »CMAKE_INSTALL_PREFIX« das Standardinstallationsverzeichnis »/usr/local« fest. Auch ihren Wert konserviert »CMakeCache.txt«. Um die Software in ein anderes Verzeichnis als »/usr/local« zu installieren, können Entwickler den Wert von »CMAKE_INSTALL_PREFIX« aber auf unterschiedliche Weisen anpassen:
- Über »ccmake ~/src/myproj« (Abbildung 4).
- Indem sie den Wert auf der Kommandozeile setzen, und zwar: »cmake ~/src/myproj/ -DCMAKE_INSTALL_PREFIX:PATH=/usr«.
- Durch direktes Editieren der Datei »CMakeCache.txt«.
Auf diese Art und Weise lassen sich alle Cachevariablen beliebig modifizieren.

|
Abbildung 4: Das Curses-Interface »ccmake« beim Editieren der Cachevariablen. Mit dem Frontend lässt sich bequem die Cmake-Projektkonfiguration verändern.
|
Externe Bibliotheken
Die bisherigen Beispielen haben zwar Programme und Bibliotheken erzeugt, aber keine externen Libraries benutzt, was in nicht trivialen Projekten aber immer notwendig ist. Eine Grafiksoftware zum Beispiel, die mit Jpeg-Bildern arbeitet, verwendet normalerweise die Jpeg-Library und die entsprechenden Jpeg-Header, die sich auf verschiedenen Systemen oft in unterschiedlichen Verzeichnissen befinden.
Bei Linux-Installationen liegen die Header der Jpeg-Library wie »jpeglib.h« typischerweise in »/usr/include«, also in einem der Standard-Include-Verzeichnisse des Compilers. Auf anderen Systemen wie Mac OS X, HP/UX oder Windows finden sich der Header und die Bibliothek meist an einer anderen Stelle. Cmake trägt diesem Umstand durch den Einsatz des »find_package()«-Befehls Rechnung:
find_package(JPEG REQUIRED)
include_directories(${JPEG_INCLUDE_DIR})
add_executable(jpegviewer main.cpp viewer.cpp)
target_link_libraries(jpegviewer ${JPEG_LIBRARIES})
Der Aufruf von »find_package()« veranlasst Cmake dazu, in seinem System-Modulverzeichnis eine Datei namens »FindJPEG.cmake« zu suchen und auszuführen. Für jedes Paket, das zum Projekt gehört, muss eine solche Datei »FindPaket.cmake« existieren.
Alle diese Dateien gehorchen dem gleichen Schema: Sie versuchen die zur Benutzung der Library nötigen Dateien im System zu finden und setzen eine Reihe von Variablen, die dann die Ergebnisse enthalten. Meist sind das eine Variable für die Include-Verzeichnisse und eine für die Libraries. Die Namensgebung folgt einem konsistenten Schema wie zum Beispiel »JPEG_INCLUDE_DIR« (alternativ »FOO_INCLUDES«) und »JPEG_LIBRARIES« (alternativ »FOO_LIB« und »FOO_LIBS«). Listing 6 zeigt die Datei »FindJPEG.cmake«.
Listing 6: »FindJPEG.cmake«
|
01 # - Find JPEG
02 # Find the native JPEG includes and library
03 # This module defines
04 # JPEG_INCLUDE_DIR, where to find jpeglib.h, etc.
05 # JPEG_LIBRARIES, the libraries needed to use JPEG.
06 # JPEG_FOUND, If false, do not try to use JPEG.
07 # also defined, but not for general use are
08 # JPEG_LIBRARY, where to find the JPEG library.
09
10 FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h)
11
12 FIND_LIBRARY(JPEG_LIBRARIES NAMES jpeg)
13
14 IF (JPEG_LIBRARIES AND JPEG_INCLUDE_DIR)
15 SET(JPEG_FOUND "YES")
16 ELSE (JPEG_LIBRARIES AND JPEG_INCLUDE_DIR)
17 SET(JPEG_FOUND "NO")
18 ENDIF (JPEG_LIBRARIES AND JPEG_INCLUDE_DIR)
19
20 IF (JPEG_FOUND)
21 IF (NOT JPEG_FIND_QUIETLY)
22 MESSAGE(STATUS "Found JPEG: ${JPEG_LIBRARIES}")
23 ENDIF (NOT JPEG_FIND_QUIETLY)
24 ELSE (JPEG_FOUND)
25 IF (JPEG_FIND_REQUIRED)
26 MESSAGE(FATAL_ERROR "Could not find JPEG library")
27 ENDIF (JPEG_FIND_REQUIRED)
28 ENDIF (JPEG_FOUND)
29
30 MARK_AS_ADVANCED(JPEG_LIBRARIES JPEG_INCLUDE_DIR)
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|