Das CMake-Buildsystem Programmentwicklung leichtgemacht
Transcript of Das CMake-Buildsystem Programmentwicklung leichtgemacht
Das CMake-Buildsystem ndash Programmentwicklungleichtgemacht
Wolfgang Dautermann
FH JOANNEUM
Chemnitzer Linuxtage 2011
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
1 Einleitung
2 Hello World Beispiel
3 CMake Syntax und Features
4 Pakete finden
5 CPack - Paketieren von Software
6 CTest amp CDash
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Was ist CMakeWelcome to CMake the cross-platform open-source build system
Zitat von der CMake-HomepageCMake is a family of tools designed to build test and packagesoftware CMake is used to control the software compilation processusing simple platform and compiler independent configuration filesCMake generates native makefiles and workspaces that can beused in the compiler environment of your choice
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Wer verwendet CMakeBekannte Projekte mit CMake als Buildsystem
Insight Segmentation and Registration Toolkit (ITK)
KDE (ab Version 4)
Mysql
Second Life
Scribus
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World BeispielWir compilieren amp installieren ein einfaches C-Programm
CMakeListstxt
cmake_minimum_required(VERSION 28)PROJECT(helloworld)SET(hello_SRCS helloworldc)ADD_EXECUTABLE(helloworld $hello_SRCS )INSTALL(TARGETS helloworld RUNTIME DESTINATION bin)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
1 Einleitung
2 Hello World Beispiel
3 CMake Syntax und Features
4 Pakete finden
5 CPack - Paketieren von Software
6 CTest amp CDash
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Was ist CMakeWelcome to CMake the cross-platform open-source build system
Zitat von der CMake-HomepageCMake is a family of tools designed to build test and packagesoftware CMake is used to control the software compilation processusing simple platform and compiler independent configuration filesCMake generates native makefiles and workspaces that can beused in the compiler environment of your choice
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Wer verwendet CMakeBekannte Projekte mit CMake als Buildsystem
Insight Segmentation and Registration Toolkit (ITK)
KDE (ab Version 4)
Mysql
Second Life
Scribus
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World BeispielWir compilieren amp installieren ein einfaches C-Programm
CMakeListstxt
cmake_minimum_required(VERSION 28)PROJECT(helloworld)SET(hello_SRCS helloworldc)ADD_EXECUTABLE(helloworld $hello_SRCS )INSTALL(TARGETS helloworld RUNTIME DESTINATION bin)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Was ist CMakeWelcome to CMake the cross-platform open-source build system
Zitat von der CMake-HomepageCMake is a family of tools designed to build test and packagesoftware CMake is used to control the software compilation processusing simple platform and compiler independent configuration filesCMake generates native makefiles and workspaces that can beused in the compiler environment of your choice
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Wer verwendet CMakeBekannte Projekte mit CMake als Buildsystem
Insight Segmentation and Registration Toolkit (ITK)
KDE (ab Version 4)
Mysql
Second Life
Scribus
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World BeispielWir compilieren amp installieren ein einfaches C-Programm
CMakeListstxt
cmake_minimum_required(VERSION 28)PROJECT(helloworld)SET(hello_SRCS helloworldc)ADD_EXECUTABLE(helloworld $hello_SRCS )INSTALL(TARGETS helloworld RUNTIME DESTINATION bin)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Wer verwendet CMakeBekannte Projekte mit CMake als Buildsystem
Insight Segmentation and Registration Toolkit (ITK)
KDE (ab Version 4)
Mysql
Second Life
Scribus
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World BeispielWir compilieren amp installieren ein einfaches C-Programm
CMakeListstxt
cmake_minimum_required(VERSION 28)PROJECT(helloworld)SET(hello_SRCS helloworldc)ADD_EXECUTABLE(helloworld $hello_SRCS )INSTALL(TARGETS helloworld RUNTIME DESTINATION bin)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World BeispielWir compilieren amp installieren ein einfaches C-Programm
CMakeListstxt
cmake_minimum_required(VERSION 28)PROJECT(helloworld)SET(hello_SRCS helloworldc)ADD_EXECUTABLE(helloworld $hello_SRCS )INSTALL(TARGETS helloworld RUNTIME DESTINATION bin)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
In-Source vs Out-of-source BuildWo kommen generierte Dateien (Objectfiles Executables ) hin
In-Source Sourcecode und generierte Dateien (ObjectfilesExecutables ) sind im selben DirectoryAufraumlumen (make clean make distclean) notwendigOut-of-Source Build-Directory 6= Sourcecode-Directory
Von CMake supported(sehr) empfohlenSourcecodedirectory wird nicht verschmutztAlle Dateien werden in einem seperaten Build-Directory erzeugtmake clean rm -rf im Build-directoryVerschiedene Builds (Debug Release ) gleichzeitig moumlglich
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Hello-World Beispiel ndash CompilierenAufruf von cmake
~helloworld -build gt cmake helloworld-- The C compiler identification is GNU-- The CXX compiler identification is GNU-- Check for working C compiler usrbingcc[]-- Configuring done-- Generating done-- Build files have been written to []~helloworld -build gt make [VERBOSE =1]~helloworld -build gt make install als root
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake GUI
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake unter WindowsErzeugung von Visual-Basic-Projekten
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMakeCachetxt
Daten die beim Konfigurationslauf gefunden werden (oder zB auf derKommandozeile angegeben werden) kommen in den CMakeCachetxtndash eine Art KonfigurationsfileSie koumlnnen dort ggf noch geaumlndert werden (Texteditor odermake edit_cache)Wenn CMakeListstxt geaumlndert wird sollte man den Cache loumlschenund neu aufbauen lassen
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und FeaturesVariablen (Case-sensitive X ltgt x)
Variablen setzen
SET (var wert)SET (var ac bc cc) var=acbccc (Liste)SET (var helloc worldc) var= helloc worldc
Variablen koumlnnen beim cmake-Aufruf gesetzt werden
cmake -Dvar=wert
File globbing
FILE(GLOB helloworld_sources c )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CMake Syntax und Features
CMakeListstxt in Subdirectories verarbeiten
ADD_SUBDIRECTORY(dirname)
gesetzte Variablen werden vererbt
In jedem Directory eine eigene Datei CMakeListstxt
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
ifthenelsea
aNuumltzliche Beispiele if(APPLE) if(WIN32) IF(UNIX) IF(WIN32 AND NOT UNIX)
IF(expression)ELSE(expression)ENDIF(expression)
Eine Variable gilt als Wahr wenn der Variablenwert nicht leer 0 N NO OFFFALSE NOTFOUND oder ltvariablegt-NOTFOUND ist
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Kontrollstrukturen
Listen verarbeiten
FOREACH(loop_var Liste)ENDFOREACH(loop_var Liste)
while()-Schleifen
WHILE(bedingung)ENDWHILE(bedingung)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Compilieren Programme und Libraries
Programme
add_executable( ltname gt sourcefiles)
add_library(ltname gt [( STATIC) | SHARED ] sourcefiles)
Den Namen ohne OS-spezifische PreSuffixes (ltnamegtexe ltnamegtdlllibltnamegtso libltnamegta ) angeben ndash wird automatisch ergaumlnzt (und istdadurch plattformunabhaumlngig)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete findenich mag nicht alles selber machen
Pakete finden
find_package(ltname gt [REQUIRED ])
Bei Bibliotheken werden die folgenden Variablen gesetzt ltnamegt_FOUNDltnamegt_LIBRARIES1 ltnamegt_INCLUDE_DIR2(Ev auch noch weitere cmake --help-module Findltnamegt)
1manchmal auch ltnamegt_LIBRARY oder ltnamegt_LIBS2manchmal auch ltnamegt_INCLUDES
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Pakete verwenden
Include-Pfad ergaumlnzen
include_directories($ltname gt_INCLUDE_DIRS )
Bibliothek linken
target_link_libraries(targetname $ltname gt_LIBRARIES )
Ggf Compilerdefinitionen ergaumlnzen (zB libPNG)
add_definitions($ltname gt_DEFINITIONS )
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Software konfigurieren
Konfigurieren eines Templatefiles
configure_file(ltinput gt ltoutput gt)
Variablen $VAR oder VAR werden durch ihre Werte ersetzt
cmakedefine VAR wird ersetzt durch define VAR bzw undef VAR
cmakedefine01 VAR wird ersetzt durch define VAR 1 bzwdefine VAR 0
Nuumltzlich um Headerfiles zu konfigurieren abhaumlngig davon ob Paketegefunden wurden oder nicht
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Installationen
Targets installieren
install(TARGETS myExe mySharedLib myStaticLibRUNTIME DESTINATION binLIBRARY DESTINATION libARCHIVE DESTINATION libstatic)
Files installieren
install(FILES files DESTINATION ltdir gt)install(DIRECTORY dir DESTINATION ltdir gt)
Installationspraumlfix angeben mit -DCMAKE_INSTALL_PREFIXPATH=mypath
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Cpack - Paketieren von Software
CMake inkludiert CPack mit dem man Installationspakete in verschiedenenFormaten erstellen kann zB
Welche Pakete sollen erstellt werden
IF (UNIX)SET(CPACK_SOURCE_GENERATOR TGZTBZ2)SET(CPACK_GENERATOR TGZTBZ2DEBRPM)
ELSE(UNIX)SET(CPACK_SOURCE_GENERATOR ZIP)SET(CPACK_GENERATOR NSIS)
ENDIF(UNIX)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CPack - Paketieren von SoftwareMetadaten festlegen (es gibt noch wesentlich mehr )
div Metadaten festlegenSET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
Description of Helloworld )SET(CPACK_PACKAGE_VENDOR The Helloworld Team)SET(CPACK_PACKAGE_DESCRIPTION_FILE
$CMAKE_CURRENT_SOURCE_DIR readmetxt)SET(CPACK_RESOURCE_FILE_LICENSE
$CMAKE_CURRENT_SOURCE_DIR licensetxt)SET(CPACK_PACKAGE_VERSION_MAJOR 0)SET(CPACK_PACKAGE_VERSION_MINOR 1)SET(CPACK_PACKAGE_CONTACT
Helloworld Team lthelloworldteamexampleorg gt)SET(CPACK_PACKAGE_SECTION games )INCLUDE(CPack)
make package bzw make package_source erstellt dann die Pakete (LiveDemo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
CTest - Testen von Softwareermoumlglicht automatierte Tests
ENABLE_TESTING() und ADD_TEST()
ENABLE_TESTING ()ADD_TEST(Testname1
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])ADD_TEST(Testname2
$EXECUTABLE_OUTPUT_PATH ltname gt [argumente ])[]
make test startet dann die Tests (Live-Demo)
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Links und weiterfuumlhrende Infos
httpwwwcmakeorg
httpwwwcmakeorgWikiCMake
inkludierte Hilfe
man cmakecmake --help
--help -full--help -command cmd--help -module module[]
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-
wwwfh-joanneumatFAHRZEUGTECHNIK
AUTOMOTIVE ENGINEERING amp RAILWAY ENGINEERING
Fragen Feedback
Vielen Dank fuumlr Ihre AufmerksamkeitWolfgang Dautermann
wolfgangdautermann [AT] fh-joanneumat
- Einleitung
- Hello World Beispiel
- CMake Syntax und Features
- Pakete finden
- CPack - Paketieren von Software
- CTest amp CDash
-