Kurs i CMake

Kurs i byggnation av C/C++ applikationer med CMake

CMake har seglat upp som det mest populära byggnations-verktyget för C/C++ applikationer och bibliotek. Skälet är att CMake egentligen är en generator för byggnations-verktyg såsom Make, Ninja, MSVSC++, Xcode med flera, vilket skapar flexibilitet avseende både verktyg och editorer.

Den här kursen fokuserar på att du snabbt ska komma igång med att skapa och arbeta i CMake baserade C/C++ projekt.
Detta får du lära dig
  • Konfigurera CMAke för C/C++ projekt
  • Konfigurera byggnation av applikationer
  • Konfigurera byggnation av statiska bibliotek
  • Konfigurera byggnation av delade bibliotek
  • Länka externa bibliotek
  • Ladda ned automatiskt och länka fjärr-bibliotek
  • Generera källkod
  • Exekvera andra verktyg som del av byggnationen
Kursinnehåll

Background

  • Why CMake was created
  • Properties of CMake
  • Compilers
  • Build tools
  • Build tool generators

Understanding Compilation and Linkage Steps

  • Using GCC
  • Pre-processor
  • Front-End compilation
  • AST and RTL
  • Back-end compilation
  • Assembler
  • Linker
  • Loader
  • Useful compiler flags
  • Linking libraries
  • Creating static libraries
  • Creating shared libraries
  • Executing with shared libraries

Brief about Makefiles

  • What is make
  • Structure of a Makefile
  • Targets
  • Actions
  • Dependencies
  • Rules
  • Ninja instead of Make

Installation of CMake

  • Installation via a package manager
  • Installation on Windows
  • Installation via TAR.GZ archive
  • Compiling from sources
  • CMake executables
  • CMake command-line help
  • CMake documentation

CMake Syntax

  • Structure of CMakeLists.txt
  • CMake stages
  • Comments
  • Command syntax
  • Text strings
  • Quoted vs. unquotes strings
  • Value lists
  • Variables
  • Conditional blocks
  • Looping blocks
  • CMake scopes
  • Subdirectories and includes
  • CMake GUI

Building Executables

  • Creating a CMake project
  • Build steps and commands
  • Programming language
  • Language standard
  • Compiler options
  • Linking standard libraries

Configure Build Variants

  • Debug vs. Release build
  • C++ vs. C sources
  • GCC vs. CLang compiler
  • Make vs. Ninja builder
  • Linux vs. Windows build

Building Libraries

  • Building a static library
  • Where to find the *.a file
  • Building a shared library
  • Where to find the *.so file
  • Propagating header files to an executable
  • Defining an object library
  • Defining a header-only library
  • Using an imported library

Linking External Libraries

  • What is an external library
  • Finding libraries
  • Configuration variables

Linking Remote Libraries

  • What is a remote library
  • Downloading and linking a remote library
  • Understanding FetchContent
  • Fetching a GIT library
  • Fetching a TAR.GZ file

Configuring and Running Tests

  • How cmake perceives a test
  • Using CTest
  • Configuring a simple test
  • Configuring a test based on a header-only testing framework (Catch2)
  • Configuring a test based on a linked testing framework (Google Test)
  • Fetching and using a remote test framework

Generating Sources

  • Copying files
  • Variable substitution
  • Managing application version
  • Assembling build info

Running External Programs

  • Custom targets
  • Running the generated executable
  • Running arbitrary scripts and programs
  • Generating API documentation using doxygen
SnabbFakta
NamnCMake
Längd2 Dagar
NivåBeginner
MålgruppC/C++ utvecklare verksamma i en *NIX miljö
Förkunskaper Erfarenhet av att bygga C/C++ applikationer via kommando-raden
Verktyg
  • Windows 10 or Windows 7
  • Ubuntu Linux @ VirtualBox or WSL @ Windows-10
  • GNU C/C++, CLang and MSVSC++
  • Make and Ninja
  • CMake
  • Catch2 and Google Test
  • Jetbrains CLion
KursDatum
DatumPlatsPrisBoka
Hämtar kursschema...
15000

Samma-Företags Rabatt

Vi ger 20% rabatt för tillkommande deltagare från samma företag vid samma kurs-tillfälle. Läs mer här.

Företagsintern Kurs

Om du beställer en företagsintern kurs kommer vi till er och håller kursen i era lokaler. Priset bestäms av vår prismodell och baseras på antalet kursdagar, antalet deltagare, samt i förekommande fall resa och logi.

Läs mer om vår prismodell och beställningsvillkor här.

Relaterade Kurser
KursDagarNivå
Make1Beginner Visa
Modern C++5BeginnerVisa
BASH Scripts Programmering1Beginner Visa