1. Home
  2. Courses
  3. Build-tools
  4. Cmake

Online Kurs omCMake

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

Fakta om kursen

Kursens namn
CMake
Längd
2 dagar
Nivå
Beginner
Målgrupp
C/C++ utvecklare
Förkunskaper
Kunna kompilera C/C++ applikationer
Verktyg
  • Linux
  • GNU C/C++ Compiler
  • JetBrains CLion

Online

Du sitter bekvämt hemma och deltar i kursen över internet. Läraren undervisar på svenska. Om du önskar du kursen på engelska, kontakta oss så skapar vi ett kursdatum för dig där kursen ges på engelska via Zoom.
Pris: 8,000 kr (€759)

Klassrum

Våra klassrum finns centralt i Stockholm. Läraren undervisar på svenska.
Pris: 15,000 kr

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

Företagsinternt

Du kan också beställa kursen som företagsintern. Då kommer vi till er och håller kursen i era lokaler. Alternativt så håller vi kursen online om ni så önskar. Ni väljer om ni vill ha kursen på svenska eller engelska. Skicka en kurs-förfrågan via knappen nedan.

Företagsintern Kurs

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 på kursen

  • 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

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