EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

makepp_build_algorithm - Online în cloud

Rulați makepp_build_algorithm în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda makepp_build_algorithm care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


makepp_build_algorithm -- Cum makepp execută un makefile

DESCRIERE


Elementele interne ale lui Makepp diferă de fabricarea standard Unix în moduri fundamentale. Această pagină
descrie în detaliu diferitele filozofii.

Inversa Raport înainte deducție
Makepp funcționează în direcția opusă față de marca standard Unix. Marca Unix tradițională
i se oferă o țintă de construit și apoi găsește o regulă care se potrivește cu personajele din
nume de fișier țintă. Dacă ținta este mai veche decât oricare dintre dependențele sale ale regulii, atunci aceasta
este reconstruită.

De exemplu, luați în considerare această regulă de model:

%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(intrare) -o $(ieșire)

Când make își dă seama că trebuie să creeze un fișier numit „xyz.o”, caută prin lista sa de
modelul reguli până când vede că „xyz.o” se potrivește cu modelul „%.o”, apoi se aplică
această regulă.

Makepp lucrează în direcția opusă. Mai întâi calculează toate fișierele pe care le poate
construiți prin aplicarea regulilor care se potrivesc cu caracterele din numele fișierelor de dependență. Apoi când
trebuie să construiască un fișier, pur și simplu caută să vadă dacă este unul dintre fișierele pe care le cunoaște
cum sa construiesti. Lista fișierelor cunoscute este stocată pe baza numelui absolut al fișierului.

Când makepp întâlnește regula modelului de mai sus, caută toate fișierele din director
potrivirea modelului „%.cxx” (adică, „*.cxx”). Pentru fiecare dintre aceste fișiere, apoi își amintește
că poate produce fișierul „.o” corespunzător. Dacă ulterior makepp descoperă că acesta
poate face un alt fișier „.cxx” care nu există în prezent, se va aplica și această regulă
iar fișierul „.o” corespunzător va fi marcat.

Acest lucru ar putea părea oarecum ineficient, dar se dovedește a nu fi atât de lent în majoritatea cazurilor,
și este adesea adevărat că practic toate fișierele care pot fi construite sunt de fapt construite.
Și cunoașterea listei complete de fișiere care pot fi construite are mai multe avantaje:

· Caracterele metalice pot potrivi fișiere care nu există încă, dar care pot fi create.

· Fișierele antet care au fost detectate de scanerul automat de dependență nu au
A exista; Makepp știe unde vor fi. (Majoritatea celorlalte soluții la această problemă
presupunem că orice antete care nu există încă se află în directorul curent.)

· Arhivele sunt mult mai simplu de implementat, deoarece makepp știe dinainte ce fișiere le
poate face. (Consultați makepp_repositories pentru detalii.)

· Este posibil să determinați cu ușurință ce fișiere pot fi construite (vezi documentul
Funcția „$(only_targets )”.

· Funcția „$(infer_objects)” a lui Makepp este mult simplificată știind ce obiecte sunt
disponibile.

Fişiere Raport textual modele
Makepp asociază comenzile de construcție cu un fișier țintă, nu cu un model textual pentru a
nume de fișier. Prin urmare, nu este confundat cu nume diferite pentru același fișier. Astfel, pentru
de exemplu, makepp va ști că „./xyz” și „xyz” sunt același fișier, în timp ce celelalte makepp
utilitățile nu pot.

Acest lucru este deosebit de important deoarece (spre deosebire de marca standard) makepp încarcă fișierele make
din directoare diferite. Pentru ca makefile-urile să fie relativ independente, cu
nicio poziție specială acordată unui makefile de nivel superior, fiecare makefile se referă la toate fișierele
raportat la propriul director. Astfel, dacă încărcați un makefile din subdirector
„other_stuff”, iar acel makefile se referă la „../xyz”, makepp va realiza din nou că este
același fișier menționat mai sus. (De asemenea, nu va fi confundat de directorul soft-link
nume.)

stocate construi informații
Makepp stochează mult mai multe informații despre fiecare fișier pe care îl construiește dincolo de data
ștampila (care este tot ceea ce îi pasă standardului). Aceste informații includ:

· Semnătura acestui fișier pe ultima versiune, astfel încât să știm dacă fișierul în sine are
schimbat.

· Numele fiecărui fișier de dependență, inclusiv fișierele incluse și alte fișiere deduse
automat. Dacă această listă se modifică, atunci makepp presupune că trebuie reconstruită.

· Semnătura fiecărei dependențe. În acest fel, makepp știe să reconstruiască nu numai atunci când
dependențele sunt mai noi decât țintă, dar când se schimbă deloc. Acest lucru face, de asemenea
este posibil să se utilizeze mai degrabă alte tipuri de semnături, cum ar fi sumele de control criptografice
decât data dosarului.

· Întreaga comandă de compilare (și cwd-ul ei). În acest fel, dacă modificați comanda de compilare
(de exemplu, schimbați opțiunile compilatorului), makepp știe să reconstruiască chiar dacă fișierele
ei înșiși nu s-au schimbat.

· Arhitectura. Dacă ați compilat programul pe Linux și apoi treceți la
Solaris, makepp știe automat să recompileze totul.

Makepp face un subdirector în fiecare director pe care îl atinge, numit „.makepp”. The
construiți informații pentru un fișier nume de fișier într-un director este stocat în .makepp/nume fișier. Dacă
ștergeți acest subdirector sau modificați fișierele, makepp va reconstrui toate fișierele afectate.

implicit încărcare
Dacă makepp încearcă să construiască o țintă într-un director și nu are încă o regulă pentru aceasta,
sau dacă caută fișiere care se potrivesc cu un wildcard într-un director, va căuta în acel director
director pentru a vedea dacă este prezent un makefile. Dacă da, makefile-ul va fi încărcat
în mod automat.

Aceasta înseamnă că, de obicei, nu trebuie să spuneți explicit makepp unde să găsiți
makefiles--tot ce trebuie să faceți este să faceți referire la un fișier dintr-un alt director, iar makepp o va face
descoperă automat cum să-l construiești.

Încărcarea implicită va avea loc numai dacă directorul poate fi scris pentru dvs. Astfel, dacă vrei
împiedicați makepp să încerce să construiască o grămadă de lucruri care nu se schimbă niciodată, pur și simplu faceți
director numai pentru citire.

Încărcarea implicită nu va avea loc dacă vă aflați într-un copac sub a RootMakeppfile(.mk) si
alt makefile este în afara acelui copac. Dacă vrei asta o dată, poți oferi un
Opțiunea „--do-build=/” pentru makepp, pentru a face totul din afara arborelui să fie construit. daca tu
Întotdeauna doriți acest lucru, puteți pune o declarație „load_makefile” undeva în arbore la
conectați-l în mod explicit la arbore.

Dacă încărcarea implicită vă iese în cale (adică makepp încarcă prea multe fișiere make și irosește
timp, sau altfel nu vrei să încerce să reconstruiască toate lucrurile descrise în
makefiles), îl puteți dezactiva pentru toate directoarele folosind comanda „--noimplicit_load”.
opțiunea de linie sau o puteți dezactiva pentru directoarele selectate folosind „no_implicit_load”
declarația din makefile.

Utilizați makepp_build_algorithm online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

  • 1
    Phaser
    Phaser
    Phaser este o deschidere rapidă, gratuită și distractivă
    cadru de joc HTML5 sursă care oferă
    Redare WebGL și Canvas
    browsere web desktop și mobile. Jocuri
    poate fi co...
    Descărcați Phaser
  • 2
    Motor VASSAL
    Motor VASSAL
    VASSAL este un motor de joc pentru creare
    versiuni electronice ale plăcii tradiționale
    și jocuri de cărți. Oferă suport pentru
    redarea și interacțiunea pieselor de joc,
    și ...
    Descărcați VASSAL Engine
  • 3
    OpenPDF - Furk of iText
    OpenPDF - Furk of iText
    OpenPDF este o bibliotecă Java pentru creare
    și editarea fișierelor PDF cu un LGPL și
    Licență open source MPL. OpenPDF este
    Succesorul LGPL/MPL open source al iText,
    o ...
    Descărcați OpenPDF - Furk of iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Sistem pentru automatizare
    Analize Geoștiințifice - este un Geografic
    Sistemul informatic (GIS) software cu
    capacități imense pentru geodate
    procesare și ana...
    Descărcați SAGA GIS
  • 5
    Caseta de instrumente pentru Java/JTOpen
    Caseta de instrumente pentru Java/JTOpen
    IBM Toolbox for Java / JTOpen este un
    biblioteca de clase Java care acceptă
    programare client/server și internet
    modele către un sistem care rulează OS/400,
    i5/OS, o...
    Descărcați Toolbox pentru Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (sau D3 pentru documente bazate pe date)
    este o bibliotecă JavaScript care vă permite
    pentru a produce date dinamice, interactive
    vizualizări în browsere web. Cu D3
    tu...
    Descărcați D3.js
  • Mai mult »

Comenzi Linux

  • 1
    abidiff
    abidiff
    abidiff - comparați ABI-urile fișierelor ELF
    abidiff compară aplicația binară
    Interfețe (ABI) a două biblioteci partajate
    în format ELF. Emite un sens
    repor ...
    Fugi abidiff
  • 2
    abidw
    abidw
    abidw - serializați ABI-ul unui ELF
    fișierul abidw citește o bibliotecă partajată în ELF
    format și emite o reprezentare XML
    a ABI-ului său la ieșirea standard. The
    emis...
    Run abidw
  • 3
    copac2xml
    copac2xml
    bibutils - conversie bibliografie
    utilitati...
    Rulați copac2xml
  • 4
    Copt
    Copt
    copt - optimizator peephole SYSNOPIS:
    fișier copt.. DESCRIERE: copt este a
    optimizator de uz general pentru vizor. Aceasta
    citește codul din intrarea sa standard și
    scrie un...
    Fugi copt
  • 5
    gather_stx_titles
    gather_stx_titles
    gather_stx_titles - aduna titlul
    declarații din documentele Stx...
    Rulați gather_stx_titles
  • 6
    gatling-banc
    gatling-banc
    bench - http benchmark...
    Alerga gatling-bench
  • Mai mult »

Ad