Byggesystemer

Undtagen i meget enkle tilfælde, vil programmeringsprojekter bestå af mange byggeblokke med kildekode, hvert af dem placeret i en enkelt fil for enklere vedligeholdelse. For at få alt til at køre, skal du effektivt kunne oversætte alt dette til nogen få maskinkodeenheder med passende format, som gør at operativsystemet kan indlæse og køre programmet.

For at opnå dette, er de grundlæggende værktøjer du behøver

Når man har et stort projekt, som kan bestå af op til hundredvis af kildekodefiler, kan kompileringsprocessen blive rigtigt arbejdsintensiv. Man vil ikke kompilere alle filer om hver gang en af dem er ændret. I stedet vil man kun kompilere de filer om som er påvirket af ændringen. I almindelighed er det ikke klart hvilke det er. Når en funktionsprototype i en deklarationsfil er ændret, skal alle filer som afhænger af deklarationsfilen kompileres om.

Når du f.eks. ændrer en funktionsprototype i en deklarationsfil, skal du kompilere hver fil som inkluderer denne deklarationsfil. Hvis dit projekt indeholder mange sådanne filer, kan du nemt glemme en eller to af dem hvis du skal gøre det manuelt. Således er automatiseringsmetoder en nødvendighed.

Make-processen

Et værktøj som tager sig af omkompileringer er make. Det holder styr på alt arbejde med et sæt regler, som beskriver hvad der skal gøres hvis en vis information (oftest en kildekode- eller objektkodefil) er ændret. Alle regler som hører til et vist projekt opbevares i en såkaldt Makefile, som behandles af make så snart du vil opdatere dit arbejde.

Hver regel består af flere byggeblokke, nærmere bestemt

  • et mål, dvs. filen som skal bygges

  • et sæt afhængigheder, egentlig navnene på de filer som målet afhænger af (f.eks. navnet på en kildekodefil, når målet er navnet på objektfilen som skal bygges) og

  • de kommandoer som skal køres for at “make” målet (dvs. for at kompilere det eller linke det sammen med andre objektfiler for at lave en kørbar programfil).

Enkelt udtrykt, læser kommandoen make reglerne en af gangen, kontrollerer hver fil i afhængighedslisten for et givet mål, og bygger målet igen hvis nogen af filerne er ændrede, med de kommandoer som er på listen i den regel.

Der er adskillige yderligere muligheder for at styre en sådan byggeproces, og en Makefile kan således vokse og blive meget kompleks. Vi kan ikke gå ind på detaljer her. Under alle omstændigheder, anbefaler vi at du gør dig bekendt med syntaksen for make. Selv om du ikke normalt bruger det direkte, kan en forståelse for det fundamentale i byggesystemet være nyttigt. Se GNU make manualen for mere information.

For mere detaljeret information specifik for KDevelop, se Bygge og projekthåndtering i denne håndbog.

Der er flere vejledninger tilgængelige, se referencer i kapitlet Bygge og projekthåndtering.