TDP005: Introduktion till Make

Relevanta dokument
IDA kursmaterial Informationsblad make. make

TDP005 Projekt: Objektorienterat system

Det finns många flaggor till g++,

Programmering i C++ Kompilering från kommandoraden

TDP005. Föreläsning 2. Filip Strömbäck

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

grundläggande C++, funktioner m.m.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Program. Kapitel make Program Interpreterande och kompilerande program

NetBeans 5.5. Avsikt. Projektfönster

Bilaga B Specifik programinformation

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Värmedistribution i plåt

Objektorienterad programmering i Java I

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Raspberry Pi och Tellstick, ett program i C.

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Föreläsning 3. Programmering, C och programmeringsmiljö

Editering, Kompilering och Exekvering av Javaprogram

NetBeans 7. Avsikt. Projektfönster

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Eclipse en handledning

Din egen webserver med Apache

Olika shell. Skalprogrammering. Pipor och omdirigering av strömmar

TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Introduktion till Jasmine 1.2 ODQL

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Att använda Java SE JDK 6

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS Konsolfönstret

Föreläsning 3. Programmering, C och programmeringsmiljö

Jobbschemaläggare. Morgan N. Sandquist Utvecklare: Gary Meyer Granskare: Lauri Watts Översättare: Stefan Asserhäll

TUTORIAL: KLASSER & OBJEKT

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDTS04: Ett chattsystem i java baserat på corba

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Så här skriver du ditt första program i C++

Programmering B med Visual C

Koda ett mattetest (lektion 4 av 5)

Introduktion till programmering. Programspråk och paradigmer

4. Kunna orientera sig mellan de olika fönstren

GitHub for Windows och GitShell

Programsystemkonstruktion med C++

Kapitel 12. Mer om program Att rapportera buggar och problem make

En bortsprungen katt

Code-Lite tutorial ( /RoJ)

Eclipse. Kort genomgång

Datorövning 5 Exponentiella modeller och elasticitetssamband

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

Simulera med ModelSim

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

Programmeringsappar. Av Alex

Instruktioner för att kunna programmera på skolans datorer

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Programbeskrivning. Chaos på Web. Version

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Laboration 10 - Eclipse

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Introduktion till programmering, hösten 2011

Övningar Dag 2 En första klass

Kort-kort om utdelade användarkonton och datormiljön på NADA

Simulering med ModelSim En kort introduktion

INTRODUKTION TILL JDBC

Programmeringsuppgifter 1

Koda ett mattetest 4 av 5. Lektionen handlar om att utveckla mattetest så det fungerar för alla multiplikationstabeller. Koda ett mattetest 4 av 5

Programmeringsteknik med C och Matlab

TDIU01 (725G67) - Programmering i C++, grundkurs

Övningar för del I av kursen

Objektorienterad programmering Föreläsning 2

JAVA Mer om klasser och objektorientering

Instruktion för laboration 1

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Att komma igång. Föreläsning 1

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Laboration: Grunderna i MATLAB

Att komma igång. Föreläsning 1

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

HI1024 Programmering, grundkurs TEN

Avslutning. Kapitel Komprimering av filer

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Anteckningar 1: Grundläggande saker

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Instruktion för laboration 1

Transkript:

TDP005: Introduktion till Make Jonas Lindgren jonas.lindgren@liu.se Torbjörn Lönnemark torbjorn.lonnemark@liu.se Niklas Hayer 2013-11-14 1

1 PROGRAMMET MAKE 2 1 Programmet make Om du kör make letar programmet efter en l som heter Makefile i arbetsmappen, för att sedan exekvera den. Har du era make- ler i samma katalog och vill köra en specik kan du göra det med kommandot make -f MinMakefil. Det nns era andra aggor till make, för mer information se man make. 2 Byggprocessen 1. Källler kompileras till objekt-ler. 2. Länkaren länkar ihop objektlerna till en exekverbar l. 3 Kompilera för hand Görs enkelt med hjälp av kommandot g++ main.cpp other.cpp -o app vilket genererar den körbara len app. 4 Grunderna i en makel En makel består i grunden av: mål: beroenden [tab]system-kommando För att applicera det på vårt tidigare kommando skulle detta ge oss en makel innehållandes: all: g++ main.cpp other.cpp -o app Vi kan nu köra denna makel med kommandot make (givet att make- len kallas Makefile). I exemplet kan vi se att standardmålet heter all, så om man inte anger ett specikt mål kommer make att bygga all. Vi ser även att all inte har några beroenden, så make kan kan direkt köra det specierade kommandot.

5 BEROENDEN 3 5 Beroenden Det är användbart att ange många olika mål, eftersom man då bara behöver kompilera om de modierade ler, och inte hela projektet när man ändrat något. all: app app: main.o other.o g++ main.o other.o -o app main.o: main.cpp g++ -c main.cpp other.o: other.cpp g++ -c other.cpp clean: rm -rf *.o app Här så har målet all enbart beroenden och inga kommandon, make ser då till att alla dessa beroenden tillgodoses och är uppdaterade. I det här fallet betyder det att make ser till att både main.o samt other.o är kompilerade från senaste versionen av källkodslerna varefter de länkas ihop enligt målet app. Nytillkommet här är även målet clean, som man kan använda för att snabbt ta bort alla objektler samt exekverbara ler. Det är användbart om man till exempel vill kompilera om alla delar i sitt projekt, eller om man vill rensa upp för att sedan packa ihop o ch distribuera det. 6 Variabler och kommentarer Man kan (och bör) använda variabler för att göra sina makeler kortare och mer lättförståeliga. # Det här är en kommentar # Kompilatorn som ska användas: CC=g++ # Flaggorna till kompilatorn: CFLAGS=-std=c++11 -Wall -Wextra -pedantic all: app

7 ÖVNING (GÖR DETTA!) 4 app: main.o other.o $(CC) main.o other.o -o app main.o: main.cpp $(CC) $(CFLAGS) -c main.cpp other.o: other.cpp $(CC) $(CFLAGS) -c other.cpp clean: rm -rf *.o app Som synes kan variabler ibland vara användbara. För att använda dem tilldelar man ett värde till en variabel innan man denierar sina mål, och använder den därefter med $(VARIABEL). 7 Övning (Gör Detta!) 1. Hämta övningslerna från kurshemsidan. 2. Skriv en makel med målen all, clean och run för den givna C++-koden. Varje källkodsl ska ha sitt eget delmål. 3. Testa att: Göra en ändring i student.cpp. Kompilera med make. Vilka ler kompileras om? Göra en ändring i student.h. Kompilera med make. Vilka ler kompileras om då? Om inget kompileras om, kan du komma på något sätt att åtgärda det? 4. Skapa ett Eclipse projekt med standard make, och lägg till din egen makel. Detta är en speciell inställning man får göra efter man skapat projektet. Kom ihåg att använda clean efter ni gjort den inställningen. 5. Skapa ett managed make projekt i Eclipse, så att en make- le genereras. Det här är default-inställningen i Eclipse. Titta igenom den, och reektera över eventuella skillnader mot den som du själv skrivit. Visa dina makeler och slutsatser för labbassistent när du är klar.

8 FÖRDJUPNING 5 8 Fördjupning Det nns mer avancerad funktionalitet i make än den som beskrivs i det här dokumentet. Vill man fördjupa sig i dessa nns det många resurser bland annat på internet som tar upp denna. Några platser att börja leta är: https://www.ida.liu.se/~tao/pub/tools/make/make-cpp.pdf http://theory.uwinnipeg.ca/gnu/make/make_toc.html http://www.student.cs.uwaterloo.ca/~isg/res/unix/make/