Kurs i

Make for C/C++ Development

Programmet Make i *NIX världen har funnits under lång tid och utgör fundamentet för automatisk byggnation av kolossalt många C/C++ applikationer. I denna kickstart-kurs fokuserar vi på GNU Make i Linux miljö och riktar in oss på ge dig den kunskap du behöver för att direkt efter kursen skapa effektiva och underhållsvänliga byggskript med hjälp av make.
Detta får du lära dig på kursen
  • Bygga C/C++ applikationer med många källkods- och inkluderingsfiler fördelade på olika underkataloger
  • Skapa arkivfiler (*.a) och dynamiskt länkade biblioteksfiler (*.so), via make
  • Skriva makefiler som använder implicita kompileringsregler
  • Skriva makefiler som har sina egna kompileringsregler och beroenden
Innehåll

Overview and Background

Kort om hur make evolverat och hur man installerar.
  • History
  • GNU Make
  • Installation
  • Prerequisites

Quick overview of compilation

Kort om olika kompileringsteg och typisk användning av GCC m.fl. program för att förbereda för kursens exempel och övningar.
  • Using GCC
  • Compilation modules
  • Common compiler flags
  • Linking
  • Linking libraries
  • Creating archives
  • Creating DLLs

Basic Syntax

Grundläggande om make och hur man kompilerar ett C++ program med flera källkodsfiler och inkluderingsfiler.
  • Makefiles
  • Simple rules syntax
  • Targets
  • Actions
  • Dependencies
  • Variables
  • Handling long lines

Writing Rules

Här går vi igenom hur make hanterar regler, dvs ett mål med tillhörande beroenden, samt olika sätt att utforma dessa.
  • How make handle rules
  • Some typical rules and how to simplify them
  • Using filename wildcards
  • Setting search path using VPATH and vpath
  • Declaring phony targets

Writing Actions

Här går vi igenom hur man skriver shellkommandon, som utförs för en matchad regel.
  • Understading how make handles an action
  • Using make variables in actions
  • Suppressing action echo

Using Variables

Här går vi igenom hur man hanterar variabler i make, att det finns två olika typer av variabler i GNU Make, samt hur man på bästa sätt expanderar variabelvärden.
  • Lazy-expand variables
  • Eager-expand variables
  • Substitution of variables
  • Appending to a variable value
  • Conditional assignment
  • Dealing with leading and trailing spaces
  • Multi-line variable values
  • Setting variables outside of the makefile
  • Some built-in variables

Built-in Functions

En ofta förbisedd egenskap av make är att det finns ett flertal användbara funktioner för att manipulera variabelvärden och filesystemsdata. Här går vi igenom alla inbyggda funktioner i make vi anser man behöver vara bekant med.
  • Invocation syntax and recommendations
  • [object Object]
  • [object Object]
  • Using foreach
  • Writing to and reading from files
  • Inspecting variables
  • Writing log messages
  • Invoking shell commands

Using Implicit Rules

En kraftfull egenskap med make är att det finns en stor mängd inbyggda regler för hur make ska kompilera C/C++/Fortran/Pascal program. Här går vi igenom de viktigaste reglerna och vilka tillhörande implicita variabler man bör känna till.
  • What is an implicit rule and how can it be used
  • Overview of implicit rules for C/C++ programs
  • Overview of implicit variables used in implicit actions

Writing Pattern Rules

En nackdel med implicita regler är att man ändå måste känna till hur de är definierade för att kunna använda dem, samt tämligen ofta behöver man ändra dessa, t.ex. då man önskar skicka producerade filer (t.ex. *.o) till speciella kataloger. I detta kapitel går vi igenom hur man skriver egna regler och även omdefinierar de inbyggda. Vår egen rekommendation är att inte använda inbyggda implicita regler, utan skapa egna implicita regler och hålla sig till dessa. På så sätt blir det enklare att debugga och underhålla en makefile som evolverar över tiden.
  • What is a pattern rule
  • Syntax for pattern rules
  • Using automatic variables in actions of pattern rules

Using Conditionals

Precis som för C/C++ program, så har även make möjlighet till villkorlig text. Typiskt kan man sätta olika värden på variabler, baserat på logiska uttryck. Här går vi igenom hur man gör detta i make.
  • Conditionals syntax
  • Comparing values
  • Checking variable definition

Advanced Usage

Här samlar vi upp några olika saker om make, som inte behandlas i något separat kapitel.
  • Dry running
  • Touching targets
  • Alterate makefiles
  • Recommended conventions
  • Recommended targets
  • Running parallel targets
  • Recursive make files

Debugging Make

Genomgång av några olika sätt att förstå hur make hanterar en makefile och på så sätt debugga byggskriptet.
  • Show rules
  • Debug printouts
  • Tracing
SnabbFakta
Namn
Make for C/C++ Development
Längd
1 dagar
Nivå
Beginner
Målgrupp
C/C++ developers working in a *NIX environment
Förkunskaper
Experience of building C/C++ applications using a command-line compiler
Teknisk miljö
  • Ubuntu Linux, eller likartad miljö.
  • En text editor för programutveckling, såsom Notpad++
  • GNU C/C++ compiler, make och övriga build-utils
  • För Windows användare rekommenderar vi antingen Ubuntu @ VirtualBox eller Windows Subsystem for Linux införd i Windows 10 Anniversary Ed.
Relaterade Kurser
Kurs LängdNivå
Modern C++ Basics5 dagar Beginner
BASH Shell Scripts Programming1 dagar Intermediate
Schemalagd Kurs

Pris

10000 kr + moms

Vi ger 20% rabatt för tillkommande deltagare från samma företag på samma kurstillfälle. Läs mer om vår samma-företags-rabatt.

Aktuella KursDatum
Startdatum Plats
30 jun 2017 Stockholm City
Företagsintern Kurs

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

Prisexempel för NN deltagare

PPP kr + moms

Antal
Område

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