Funksjon for å sjekke om en fil eksisterer med GNU Make
GNU makefiles lar småbedrifter sette ut kildekoden som kan tilpasse samlingen til en bestemt klient maskin, og preemptively oppdage problemer eller unmet programvare avhengigheter. Å sjekke for å se om visse filer eksisterer, er sentrale i GNU make-funksjonen, og du kan velge mellom en av flere metoder for å gjøre nettopp det.
regler
En måte å kontrollere om en fil eksisterer i GNU makefile innebærer sitt innebygde system av regler. Koden under syntaxen "Målet: Normale Forutsetninger | Ordreforutsetninger" utføres bare hvis filen eller filene som er angitt som "Mål", ikke er nyere enn de du angir i "Normale forutsetninger", og hvis filene du spesifiser i "ordre-kun-forutsetninger" eksisterer. Hvis du bruker syntaksen "mål: | Bestillings-bare-forutsetninger" og ikke spesifiser noen filer til venstre i "|" symbolet, vil koden nedenfor bare utføres hvis filen eller filene du angir som "bestillings-bare-forutsetninger" eksisterer.
Testfunksjon
Kommandoen "test -f" kan også sjekke om en bestemt fil eksisterer. Denne kommandoen tar et filnavn som et argument, og returnerer deretter en boolsk verdi av «true» hvis filbanen du passerte kommandoen eksisterer, og "false" hvis den ikke er der. Du kan integrere denne kommandoen i "om" setninger og andre kontrollfunksjoner du plasserer i makefile for finkornet kontroll over håndtering av begge utfall.
Sjekker for katalog
Regelmetoden eller "test -d" -kommandoen fungerer akkurat som "test -f" -kommandoen, bare den returnerer sann hvis banen du oppgav som et argument er en eksisterende katalog, i stedet for å se om argumentet er en fil . Hvis du kontrollerer eksistensen av en katalog der din makefile skal kompilere eller bygge filer, vil kommandoen "mkdir -p katalognavn" forsøke å lage en katalog med navnet du spesifiserte som "katalognavn", med mindre den eksisterer allerede. "-P" -argumentet forhindrer mkdir fra å kaste en feilmelding som gjør at sluttbrukeren tror at noe har gått galt. Du kan deretter bruke katalogen i din makefile kode og vite at filen eksisterer - fordi den allerede var der eller fordi mkdir opprettet den.
Robust Makefile
Ulike klientsystemer for pakkepakker hvor programvaren din avhenger av litt forskjellige katalogbaner. Hvis du antar en enkelt plassering, kan kundene dine motta makefiler som forteller at de trenger en programvarepakke de allerede har. Du kan minimere dette problemet ved å undersøke de forskjellige systemene som brukes av klientbasen din, og sørg for at din makefile kontrollerer flere mulige steder for avhengige programvarepakker.