EngelsFransSpaans

Ad


OnWorks-favicon

makepp_build_algorithm - Online in de cloud

Voer makepp_build_algorithm uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht makepp_build_algorithm die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


makepp_build_algorithm -- Hoe makepp een makefile uitvoert

PRODUCTBESCHRIJVING


Makepp's internals verschillen op fundamentele manieren van het standaard Unix-merk. Deze pagina
beschrijft de verschillende filosofie in detail.

Omkeren vs vooruit gevolgtrekking
Makepp werkt in de tegenovergestelde richting van het standaard Unix-merk. Traditioneel Unix-merk
krijgt een doel om te bouwen, en vindt vervolgens een regel die overeenkomt met de karakters in de
doelbestandsnaam. Als het doel ouder is dan de afhankelijkheden van de regel, dan is het dat wel
wordt herbouwd.

Beschouw bijvoorbeeld deze patroonregel:

%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(invoer) -o $(uitvoer)

Wanneer make zich realiseert dat het een bestand met de naam "xyz.o" moet maken, doorzoekt het de lijst met
patroonregels totdat het ziet dat "xyz.o" overeenkomt met het patroon "%.o", en dan is het van toepassing
deze regel.

Makepp werkt in de tegenovergestelde richting. Het berekent eerst alle bestanden die het mogelijk kan maken
bouwen door regels toe te passen die overeenkomen met de tekens in de afhankelijkheidsbestandsnamen. Wanneer dan
het moet een bestand bouwen, het kijkt eenvoudigweg of het een van de bestanden is die het kent
hoe te bouwen. De lijst met bekende bestanden wordt opgeslagen op basis van de absolute bestandsnaam.

Wanneer makepp de bovenstaande patroonregel tegenkomt, zoekt het naar alle bestanden in de map
overeenkomend met het patroon "%.cxx" (dwz "*.cxx"). Voor elk van deze bestanden onthoudt het vervolgens
dat het het overeenkomstige ".o"-bestand kan produceren. Als makepp vervolgens ontdekt dat het
Als u een ander ".cxx"-bestand kunt maken dat momenteel niet bestaat, wordt deze regel ook toegepast
en het bijbehorende ".o"-bestand wordt gemarkeerd.

Dit lijkt misschien wat inefficiënt, maar in de meeste gevallen blijkt het niet zo langzaam te zijn.
en het is vaak waar dat vrijwel alle bestanden die kunnen worden gebouwd, ook daadwerkelijk worden gebouwd.
En het kennen van de volledige lijst met bestanden die kunnen worden gebouwd, heeft verschillende voordelen:

· Jokertekens kunnen overeenkomen met bestanden die nog niet bestaan ​​maar kunnen worden gebouwd.

· Headerbestanden die zijn gedetecteerd door de automatische afhankelijkheidsscanner hebben dat niet
bestaan; makepp weet waar ze zullen zijn. (De meeste andere oplossingen voor dit probleem
neem aan dat alle headers die nog niet bestaan, zich in de huidige map bevinden.)

· Repository's zijn veel eenvoudiger te implementeren, omdat makepp van tevoren weet welke bestanden het bevat
kan maken. (Zie makepp_repositories voor details.)

· Het is mogelijk om eenvoudig te bepalen welke bestanden gebouwd kunnen worden (zie de
"$(only_targets )" functie.

· De "$(infer_objects)"-functie van Makepp wordt enorm vereenvoudigd door te weten wat objecten zijn
beschikbaar.

Bestanden vs tekstueel patronen
Makepp associeert build-opdrachten met een doelbestand, niet met een tekstueel patroon voor a
bestandsnaam. Het wordt dus niet verward door verschillende namen voor hetzelfde bestand. Dus voor
makepp zal bijvoorbeeld weten dat "./xyz" en en "xyz" hetzelfde bestand zijn, terwijl andere make
nutsvoorzieningen mogelijk niet.

Dit is vooral belangrijk omdat (in tegenstelling tot het standaardmerk) makepp makefiles laadt
uit verschillende mappen. Om ervoor te zorgen dat de makefiles relatief onafhankelijk zijn, met
geen speciale positie gegeven aan een makefile op het hoogste niveau, elke makefile verwijst naar alle bestanden
ten opzichte van zijn eigen map. Dus als u een makefile uit de submap laadt
"other_stuff", en dat makefile verwijst naar "../xyz", zal makepp opnieuw beseffen dat het
hetzelfde bestand als hierboven vermeld. (Het zal ook niet in de war worden gebracht door soft-linked directory
namen.)

Opgeslagen bouw informatie
Makepp slaat veel meer informatie op over elk bestand dat het bouwt, behalve alleen de datum
stempel (dat is het enige waar de standaard zich om bekommert). Deze informatie omvat:

· De handtekening van dit bestand op de laatste build, zodat we weten of het bestand zelf heeft
gewijzigd.

· De namen van elk afhankelijkheidsbestand, inclusief include-bestanden en andere afgeleide bestanden
automatisch. Als deze lijst verandert, gaat makepp ervan uit dat deze opnieuw moet worden opgebouwd.

· De handtekening van elke afhankelijkheid. Op deze manier weet makepp niet alleen opnieuw op te bouwen wanneer het
afhankelijkheden zijn nieuwer dan het doel, maar wanneer ze überhaupt veranderen. Dit maakt ook
het is mogelijk om andere soorten handtekeningen te gebruiken, zoals cryptografische checksums
dan de dossierdatum.

· Het volledige bouwcommando (en zijn cwd). Op deze manier als u het build-commando wijzigt
(wijzig bijvoorbeeld de compileropties), weet makepp opnieuw op te bouwen, zelfs als de bestanden
zelf zijn niet veranderd.

· De architectuur. Als je je programma op Linux hebt gecompileerd en vervolgens overschakelt naar
Solaris, makepp weet automatisch alles opnieuw te compileren.

Makepp maakt een submap in elke map die het aanraakt, genaamd ".makepp". De
bouw informatie voor een bestand bestandsnaam in een directory is opgeslagen .makepp/bestandsnaam. Indien
Als u deze submap verwijdert of de bestanden wijzigt, zal makepp alle getroffen bestanden opnieuw opbouwen.

Impliciet het laden
Als makepp probeert een doel in een map te bouwen en daar nog geen regel voor heeft,
of als het zoekt naar bestanden die overeenkomen met een jokerteken in een map, zal het daarin zoeken
directory om te zien of er een makefile aanwezig is. Als dat het geval is, wordt de makefile geladen
automatisch.

Dit betekent dat u makepp meestal niet expliciet hoeft te vertellen waar het te vinden is
makefiles - het enige wat u hoeft te doen is naar een bestand in een andere map verwijzen, en makepp zal dat doen
automatisch uitzoeken hoe het te bouwen.

Impliciet laden zal alleen plaatsvinden als de map voor u schrijfbaar is. Dus als je dat wilt
voorkomen dat makepp een heleboel dingen probeert te bouwen die nooit veranderen, maak gewoon de
map alleen-lezen.

Impliciet laden zal niet plaatsvinden als u zich in een boom onder a bevindt RootMakeppbestand(.mk) en
andere makefile bevindt zich buiten die boom. Mocht je dit toch een keer willen, dan kun je een
"--do-build=/" optie voor makepp, om alles buiten de boom bouwbaar te maken. als jij
Als u dit altijd wilt, kunt u ergens in de boom een ​​instructie "load_makefile" plaatsen
verbind het expliciet met de boom.

Als impliciet laden u in de weg staat (dat wil zeggen, makepp laadt te veel makefiles en het verspilt
tijd, anders wil je echt niet dat het probeert alle dingen die in de
makefiles), kunt u dit voor alle mappen uitschakelen met behulp van de opdracht "--noimplicit_load".
line-optie, of u kunt deze uitschakelen voor geselecteerde mappen met behulp van de "no_implicit_load"
verklaring in uw makefile.

Gebruik makepp_build_algorithm online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    Phaser
    Phaser
    Phaser is een snelle, gratis en leuke open
    source HTML5-gameframework dat biedt
    WebGL- en Canvas-weergave overdwars
    desktop- en mobiele webbrowsers. Spellen
    kan samen zijn...
    Phaser downloaden
  • 2
    VASSAL-motor
    VASSAL-motor
    VASSAL is een game-engine om te creëren
    elektronische versies van traditioneel bord
    en kaartspellen. Het biedt ondersteuning voor
    weergave en interactie van speelstukken,
    en...
    VASSAL-engine downloaden
  • 3
    OpenPDF - Vork van iText
    OpenPDF - Vork van iText
    OpenPDF is een Java-bibliotheek voor het maken van
    en het bewerken van PDF-bestanden met een LGPL en
    MPL open source-licentie. OpenPDF is de
    LGPL/MPL open source opvolger van iText,
    een...
    Download OpenPDF - Vork van iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Systeem voor geautomatiseerd
    Geowetenschappelijke analyses - is een geografische
    Informatie Systeem (GIS) software met
    enorme mogelijkheden voor geodata
    verwerking en analyse...
    SAGA GIS downloaden
  • 5
    Toolbox voor Java/JTOpen
    Toolbox voor Java/JTOpen
    De IBM Toolbox voor Java / JTOpen is een
    bibliotheek van Java-klassen die de
    client/server- en internetprogrammering
    modellen naar een systeem met OS/400,
    i5/OS, o...
    Toolbox voor Java/JTOpen downloaden
  • 6
    D3.js
    D3.js
    D3.js (of D3 voor gegevensgestuurde documenten)
    is een JavaScript-bibliotheek waarmee u
    om dynamische, interactieve gegevens te produceren
    visualisaties in webbrowsers. Met D3
    u...
    D3.js downloaden
  • Meer "

Linux-commando's

  • 1
    abidiff
    abidiff
    abidiff - vergelijk ABI's van ELF-bestanden
    abidiff vergelijkt de Application Binary
    Interfaces (ABI) van twee gedeelde bibliotheken
    in ELF-formaat. Het straalt een betekenis uit
    verslag...
    Voer abidiff uit
  • 2
    blijf
    blijf
    abidw - serialiseer de ABI van een ELF
    bestand abidw leest een gedeelde bibliotheek in ELF
    formaat en verzendt een XML-representatie
    van zijn ABI naar standaarduitvoer. De
    uitgestoten ...
    Voer abidw uit
  • 3
    copac2xml
    copac2xml
    bibutils - conversie van bibliografie
    nutsvoorzieningen ...
    Voer copac2xml uit
  • 4
    Copt
    Copt
    copt - kijkgaatje-optimizer SYSNOPIS:
    copt-bestand.. BESCHRIJVING: copt is een
    kijkgaatje-optimizer voor algemeen gebruik. Het
    leest code van zijn standaardinvoer en
    schrijft een...
    Kopt uitvoeren
  • 5
    collect_stx_titles
    collect_stx_titles
    collect_stx_titles - titel verzamelen
    verklaringen van Stx-documenten ...
    Voer collect_stx_titles uit
  • 6
    gatling-bank
    gatling-bank
    bank - http-benchmark ...
    Run gatling-bank
  • Meer "

Ad