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å engelska om minst en av deltagarna önskar det, annars på svenska.
Pris: 8,000 kr (€759)

Klassrum

Våra klassrum finns centralt i Stockholm.
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. 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