Functie om te controleren of een bestand bestaat met GNU Make
Met GNU-makefiles kan je kleine onderneming de broncode uitzetten die de compilatie kan aanpassen aan de computer van een specifieke klant en preventief problemen of onvervulde softwareafhankelijkheden kan opsporen. Controleren om te zien of bepaalde bestanden bestaan, staat centraal in de GNU make-functie, en je kunt kiezen uit een van de verschillende methoden om precies dat te doen.
Reglement
Een manier om te controleren of een bestand in je GNU makefile bestaat, is het ingebouwde systeem van regels. De code onder de syntaxis "target: normale-voorwaarden | order-only-voorwaarden" wordt alleen uitgevoerd als het bestand of de bestanden die zijn opgegeven als "doel" niet nieuwer zijn dan die welke u opgeeft in "normale vereisten" en als de bestanden die u specificeren in "alleen-bestellingsvoorwaarden" bestaat. Als u de syntaxis "target: | order-only-prerequisites" gebruikt en geen bestanden opgeeft aan de linkerkant van de "|" symbool, dan zal de onderstaande code alleen worden uitgevoerd als het bestand of de bestanden die u opgeeft als "alleen-bestellingsvoorwaarden" bestaan.
Testfunctie
De opdracht "test -f" kan ook controleren of een bepaald bestand bestaat. Deze opdracht neemt een bestandsnaam als een argument, retourneert vervolgens een Booleaanse waarde van "true" als het pad naar het bestand dat u hebt opgegeven, bestaat en "false" als het er niet is. U kunt dit commando integreren in "als" -instructies en andere besturingsfuncties die u in het maakbestand plaatst voor fijnmazige controle over het afhandelen van beide uitkomsten.
Zoeken naar directory
De regelsmethode of de opdracht "test -d" werkt precies zoals de opdracht "test -f", alleen retourneert true als het pad dat u als argument hebt opgegeven een bestaande map is, in plaats van te controleren of het argument een bestand is . Als je het bestaan controleert van een map waarin je makefile compileert of bestanden maakt, probeert de opdracht "mkdir -p directory-name" een map te maken met de naam die je hebt opgegeven als "directory-naam", tenzij het bestaat al. Het argument "-p" voorkomt dat mkdir een foutmelding geeft waardoor de eindgebruiker denkt dat er iets mis is gegaan. U kunt dan de map in uw makefile-code gebruiken, wetende dat het bestand bestaat - omdat het er al was of omdat mkdir het heeft gemaakt.
Robuuste Makefile
Verschillende clientsystemen slaan pakketten op waarvan uw software afhankelijk is van enigszins verschillende directorypaden. Als u echter van een enkele locatie uitgaat, kunnen uw klanten makefiles ontvangen die aangeven dat ze een softwarepakket nodig hebben dat ze al hebben. U kunt dit probleem minimaliseren door de verschillende systemen te onderzoeken die door uw doelcliëntbasis worden gebruikt, en ervoor te zorgen dat uw makefile meerdere mogelijke locaties voor afhankelijke softwarepakketten controleert.