Dit is de opdracht makepp_release_notes 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_release_notes -- Grote veranderingen in elke versie van makepp
PRODUCTBESCHRIJVING
Versie 2.1 (Onder ontwikkeling)
· Ingebouwde &sjabloon mini-taaldocumentatie herschreven. Het heeft nu een
"@erbij betrekken(bestandsnaam)@" macro.
· C Scanner houdt nu rekening met compilerspecifieke padvariabelen zoals
"C_INCLUDE_PATH" of "LIB".
· Parens zijn nu genest zoals in GNU make of Shell: "$(name ...()...)"
· Nieuwe omgevingsvariabele "MAKEPP_DEBUG".
· Installatiestandaarden voor html-doc en man zijn enigszins gewijzigd.
· De nieuwe optie "--loop" is de opvolger van "--stop-after-loading", die wordt uitgebreid
om de voorsprong te krijgen voor elke bewerkingscompilatiecyclus in een eindeloze lus.
· De "include"-instructies en de functies "find-first-upwards" en "find-upwards"
zal niet langer hoger zoeken dan a RootMakepp-bestand, als deze aanwezig is.
· De gmake-stijl waarmee de regel wordt geplaatst om een include-bestand na de include te maken
verklaring wordt niet aanbevolen, maar wordt nu ondersteund. Dus de optie "--defer-include"
is verwijderd.
· Alle functies van vóór 2.0 die verouderde waarschuwingen gaven, zijn geëlimineerd
$Mpp::Makefile::legacy_functions en $MAKEPP_INSTALL_OLD_MODULES.
· U kunt de nieuwe makeppinfo, mppi-optie "--unremembered" gebruiken om te zien dat deze niet langer nodig is
bestanden.
· Je kunt de nieuwe makeppreplay, mppr optie "--sed" gebruiken om een commando anders af te spelen,
bijvoorbeeld om te stoppen na voorbewerking of om foutopsporingsopties aan de linker toe te voegen.
· Er was een ongedocumenteerde (en enigszins buggy) functie waarbij making .makepp/log
onschrijfbaar zou het loggen onderdrukken. In plaats daarvan valt het nu terug naar "--verbose", dus jij
moet "--no-log" doorgeven als je dat wilt. Deze optie en nog een paar andere waren er ook al
beschikbaar voor makeppreplay, mppr, maar niet gedocumenteerd.
· Minimaal Perl 5.8 is vereist.
Versie 2.0 (Maart 2012)
De items zijn grofweg gerangschikt op toenemende leeftijd, dus u hoeft alleen de eerste delen te lezen
als u snapshots nieuwer dan 1.40 gebruikt.
· De handtekeninginstructie overschrijft niet langer de methode die door opdrachtparsers wordt gevonden - nu
Als u dat wilt, moet u het trefwoord 'overschrijven' opgeven. Er zijn nieuwe handtekeningen
methoden "xml" en "xml-space". De handtekening "c_compilation_md5" kan nu ook zijn
aangeroepen als "C" (omdat handtekeningen betrekking hebben op bestanden, niet op acties). Het (en zijn
subklassen) kunnen nu eenvoudig worden uitgebreid naar andere achtervoegsels, zoals in de betekenis "C.ipp,tpp".
dat dit naast de ingebouwde achtervoegsels ook van toepassing zal zijn op bestanden die eindigen op .ik p or .tpp.
Dankzij deze makeppreplay en ingebedde SQL/C werkt het nu betrouwbaarder. Pas op: dit
is niet begrijpelijk by ouder versies. So niet Bellen an ouder mpp on spullen bebouwd with
dit versie, welke omvat vanaf a bewaarplaats helpen bebouwd inch
· Het trefwoord "global" kan voorafgaan aan "build_cache", "build_check" en "signature"
-statements en de 'define'-statement die nu ook 'export' toestaat. Daarom s_
subs krijgen nu een 4e parameter, een hash-referentie met de aangetroffen trefwoorden als sleutels.
· Makefiles worden nu geparseerd met dezelfde prioriteit als in gmake. Vandaar "include :" of
"include =" zijn nu uitspraken (geen spatie: nog steeds regel of toewijzing.) Dit betekent dat
"perl {qualified::name }" verdwijnt niet langer op mysterieuze wijze (het was vroeger een nutteloos
regel.) Variabelenamen mogen nu witruimte bevatten. Dit betekent dat "&preprocess
--assignment" zal vrijwel elk gelijkteken als een toewijzing behandelen (vervang ze door
$E uit de grappige opdracht "E==".)
· Als u een federatieve build-cache over meerdere schijven heeft, en sommige daarvan zijn dat ook
Bij voorkeur moet u hun build_cache_options.pl bewerken en PREFERRED wijzigen in
x VOORKEUR. (Dit weerspiegelt een algemene verandering in de namen, waarbij we nu het voorvoegsel 'x' all gebruiken
xATTRIBUTEN die waar zijn als ze bestaan).
· De variabele "VPATH" en de instructie "vpath" worden nu geëmuleerd.
· Makefile-functies ("sub f_...") kunnen nu hun eerste parameter als string krijgen
referentie. In dat geval bent u zelf verantwoordelijk voor het uitbouwen van uw argumenten. Gebruik de
accessor-functies &arg of "args" beschreven in makepp-extensies. Totdat je rond bent
om uw functies bij te werken, kunt u dit uitschakelen door in te stellen
"$Mpp::Makefile::legacy_functions = 1" in uw makefile (één per build-systeem
is voldoende, omdat het een Perl-variabele is) of patch deze in uw nieuwe makepp-installatie. Als
u wilt dat uw bijgewerkte functies werken met zowel uw oude als deze nieuwe makepp, gebruik
"ref $_[0] ? &arg : $_[0]" of "ref $_[0] ? args(...) : $_[0]" in de overgangsfase.
Binnen "$(call)" zijn de speciale variabelen "$0, $1, ..., $(11), ..." nu uitgebreid
net als elke andere make-variabele. Dit veroorzaakt kleine verschillen met het voorgaande werk
rondom. Het resultaat ligt dichter bij gmake, tenminste als "makepp_simple_concatenation=1" is
in te stellen.
· Door CMake gegenereerde makefiles leiden niet langer tot diepe recursie.
· Nieuwe scanner "esql_compilation" voor embedded SQL C, bestrijkt nu alle databases. Je moet
echter de regels geven.
· Nieuwe optie --hybrid-recursive-make (volg elke optielink om kortere formulieren te zien) as
een slimmer alternatief voor --traditioneel-recursief-maken.
Nieuwe optie --stop-after-loading geeft makepp een voorsprong terwijl je nog aan het bewerken bent.
Nieuwe opties --rm-stale, --sandbox en --dont-read, voor sandbox-controle tijdens het draaien
meerdere gelijktijdige (mogelijk gedistribueerde) makepp-opdrachten.
Makepp zal nu ook zoeken naar opties in bestanden genaamd .makepprc. De optie
--args-file is nu consistent beschikbaar voor alle opdrachten.
De omgevingsvariabele MAKEPP_CASE_SENSITIVE_FILENAMES heeft voorrang op de opties
--hoofdlettergevoelige bestandsnamen en --geen hoofdlettergevoelige bestandsnamen.
De optie "--keep-repository-links" verwijderd, waarvan het gedrag nu de standaard is.
Alle hulpprogramma's vragen nu ook een omgevingsvariabele op voor het instellen van opties. Elke
wordt net als het hulpprogramma in hoofdletters aangeroepen, met FLAGS toegevoegd, bijvoorbeeld $MAKEPPCLEANFLAGS of
$MAKEPPLOGFLAGS.
Korte opdrachtregelopties kunnen nu op de Unix-manier worden gegroepeerd, dus "-k -j 4" kan dat ook zijn
gegeven als "-kj4". In alle lange opties mag het streepje tussen de woorden nu consistent zijn
weggelaten of vervangen door een onderstrepingsteken, zodat "--no-log" "--nolog" kan zijn of
"--geen_log". Onbekende opties veroorzaken nu een fout.
· Oorspronkelijk betekende "makeppclean" "-l" "--leave-src-info", maar nu zijn de opties
uitgebreid en deze veranderde in "-k|--keep-src-info".
· De scanterminologie is opgeschoond (en de pagina herschreven) om eindelijk overeen te komen met a
herontwerp dat een paar jaar geleden plaatsvond. Er zijn nu 3 afzonderlijke termen, de lexer
(waar gebruikers zich geen zorgen over hoeven te maken), de (opdracht)parsers en het (bestand)
scanners.
Voor gevorderde gebruikers: De nieuwe interface bestaat uit de "register_parser" of
"register_command_parser"-instructies, de ":parser"-regeloptie en de "p_*"-parser
fabrieksfuncties die een alias krijgen van hun parserklasse als "fabriek". De verkeerd genoemde
"register_scanner"-instructie, ":scanner"-regeloptie en ":scanner_*" of ":parser_*"
functies zijn verouderd.
· Nieuwe variabele MAKEPP_VERSION.
· Alle interne klassen zijn verplaatst naar het nieuwe pakket "Mpp::" om aan CPAN te voldoen
regels, en om potentiële botsingen met elke module die u in uw
maakbestanden. Dit is transparant voor informele gebruikers van makepp.
In het geval dat je Perl-programmering hebt gedaan voor je makefiles, en je hebt er een paar gebruikt
internals, dit zou je build kapot maken. Er is dus sprake van een tijdelijke achteruitgang
compatibiliteitsfunctie, die in de toekomst wordt verwijderd en die u kunt activeren tijdens
installatie. Er wordt gecontroleerd op de nieuwe omgevingsvariabele $MAKEPP_INSTALL_OLD_MODULES
een lijst met oude modules die u wilt maken als wrappers rond de nieuwe. Aanvullend
als je makefiles hebt die je niet snel kunt veranderen, die afhankelijk zijn van deze dingen
beschikbaar zonder een "use"-instructie, moet u deze modules vooraf laten gaan door een "+", om deze te verkrijgen
ze zijn voorgeladen:
MAKEPP_INSTALL_OLD_MODULES='+Globregel +MakeEvent'
· Nieuwe makeppreplay, mppr-hulpprogramma om enkele acties van makepp zeer snel te herhalen. Nieuw
makepplog, mppl-hulpprogramma om de loggegevens leesbaar te bekijken, nodig vanwege een gewijzigd bestand
formaat. Nieuw makeppgraph, mppg-hulpprogramma voor het grafisch analyseren van afhankelijkheden, inclusief
en gedeeltelijk de redenen voor een wederopbouw. Nieuwe makeppinfo, mppi-hulpprogramma om enigszins te zien
cryptisch wat makepp weet over een bepaald bestand.
· Geporteerd naar IBM z/OS Unix System Services. Alleen slim recursief maken werkt niet.
· Makepp is merkbaar sneller geworden.
· Schaf het ongedocumenteerde hernoemen van alleen '.' af. naar '_dot_' in variabele en
functie namen.
· Nieuwe variabele $/ voor het draagbare mapscheidingsteken. Veel Windows-oplossingen, waaronder
"-j" (parallelle builds) voor Cygwin en MinGW en slimme recursieve builds op Cygwin.
· Installeer ook afkortingen bestaande uit 'mpp' plus de eerste letter van every
volgend woord, bijvoorbeeld 'mppc' voor makeppclean.
· Nieuw `:build_check only_action' voor commando's die niet afhankelijk zijn van de inhoud van hun
afhankelijkheden, zoals het maken van symlinks, waar deze automatisch wordt gebruikt.
· Verwijderd "--norc-substitution" en "--procent-subdirs" en "$(rc_substitution)" en
"percentage_submappen". Ze kunnen nu overal worden gegeven, van een doelspecifieke opdracht
naar de opdrachtregel of omgevingsvars "makepp_simple_concatenation" en
"makepp_percent_subdirs".
· Nieuwe actiesyntaxis "&perl_function 'arg 1' arg2 ..." en "&external-perl-script 'arg 1'
arg2..." Nieuwe Perl-functie "run".
Er zijn de volgende ingebouwde opdrachten: &chmod, &cp, &cut, &echo, &expr, &grep,
&install, &ln, &mkdir, &mv, &perl, &preprocess, &printf, &rm, &sed, &sort, &sjabloon,
&touch, &uninstall, &uniq en &yes, die Unix-opdrachten met dezelfde naam kunnen vervangen,
en min of meer ook het volgende: "awk", "chgrp", "chown", "head", "m4", "rmdir",
"staart" en "tr". Ze zijn ook stand-alone verkrijgbaar bij Shell. Dat kunnen ze ook
worden gebruikt als functies, bijvoorbeeld "$(&cat file)", of als instructies, of zelfstandig.
Merk op dat, in tegenstelling tot eerdere CVS-versies, nu "&cut -f", "&grep -v" en "&sort -r"
zich gedragen zoals in Unix. Merk op dat in eerdere CVS-versies van &sjabloon "@@" werd verwerkt
vóór "@", maar nu worden de regels consistent van voor naar achter verwerkt.
· Een "algemene" instructie toegevoegd voor het delen van variabelen tussen makefiles. De opdracht
variant van "export" werkt nu als een normale opdracht, dus het kan zijn dat u naar
":=". De modifier "overschrijven" toegevoegd aan toewijzingen. De instructie "define var :="
maakt het nu optioneel mogelijk om het soort toewijzing te specificeren. En de formulieren met onmiddellijke ingang
evaluatie behoudt de nieuwe regels in "$(shell ...)" of "$(&command)". Er zijn nieuwe
toewijzingsoperatoren "&=" voor prepending, en ";=" wat een "=" is wanneer ingesteld, maar
verandert automatisch in een ":=" wanneer het voor het eerst wordt gebruikt.
· Er wordt nu ook een makefile gevonden als deze "Makeppfile.mk" heet.
· Er zijn twee nieuwe mogelijke bestandsnamen voor makefiles: "RootMakeppfile" of gelijkwaardig
"RootMakeppbestand.mk". De aanwezigheid van een van deze geeft uw buildboom een formeel karakter
root, toegankelijk via de nieuwe variabele "$(ROOT)". Het voordeel is dat dit bestand
wordt altijd als eerste geladen, indien aanwezig, waardoor u gemakkelijker een bouwsysteem kunt maken
waar makepp overal vandaan kan worden aangeroepen, zonder te vertellen welk make-bestand moet worden gestart
op.
De root van het bestandssysteem wordt dan automatisch gemarkeerd met "--dont-build", zodat
makepp gaat niet in andere mappen knoeien die je opneemt of waarvan je libs gebruikt, gewoon
omdat ze toevallig een Makefile of bronnen hebben.
Meestal betekent dit dat de root van uw bouwsysteem gemarkeerd wordt met "--do-build".
Als u echter "--do-build" zegt voor iets onder de root van uw buildsysteem, welke
erft "--dont-build" niet over, maar in plaats daarvan wordt de root van uw buildsysteem gemarkeerd
"--niet bouwen".
· Het commando "makeppclient" is verwijderd omdat het ons nooit is gelukt om builds te laten starten
aanzienlijk sneller. De optie "--stop-na-laden" is voordeliger.
· Interfacedefinitiebestanden voor SWIG (.i-bestanden) worden nu gescand op insluitingen. Makepp
begrijpt nu slokaanroepingen. (SWIG staat voor Simplified Wrapper en Interface
Generator. Het genereert automatisch alle wrapper-functies om uw C of C++ te koppelen
codeer naar een verscheidenheid aan andere talen, zoals Perl, Python, Tcl, Ruby, OCaml, C#, enz.
Bekijk http://www.swig.org/.)
· GNU Emacs 22 heeft nu een standaard makefile-makepp-modus, wat de standaard is wanneer
bezoek Maakpp-bestand.
· $[VARIABLE] of $[function ...] wordt geëvalueerd bij het lezen van een makefile-regel, dus de
variabele kan makepp-syntaxis bevatten.
· $( ...) is nu altijd een lijst in rc-stijl substitutie, zodat "-I$( $(DIRLIST))"
laat geen eenzame optie over als DIRLIST leeg is.
· Je kunt nu functies en lijsten met meerdere regels dubbel koppelen, waardoor zaken als
"$((perl if( $a < 5 ) { ... }))".
· Nieuwe "c_compilation_md5"-handtekening, waarmee ook witruimte kan worden toegevoegd waar die er was
geen en omgekeerd. Het negeert ook witruimte en commentaar na het laatste token.
Dit is handig om een nutteloze herbouw te voorkomen als uw VC regels toevoegt op een "$""Log$"
taggen bij het inchecken.
· Implementeren van $? precies zoals GNU doet. Nieuwe lange naam "$(changed_inputs)" ervoor.
· Implementeer "$(error ...)" en "$(warning ...)" zoals in GNU make.
· Nieuwe methode ": build_check negeer_action" om wijzigingen in de actiereeks te negeren.
· Nieuwe uitspraken "ifperl", "ifmakeperl", "iftrue", "ifntrue", "ifsys" en "ifnsys".
· Voorwaardelijke waarden "ifxxx" kunnen nu worden gegroepeerd met "en" en "of". Wanneer erop geschreven
regel na "else", creëren ze een vertakking van dezelfde verklaring, in plaats van te vereisen
nestelen.
· Ondersteuning toegevoegd voor afhankelijkheden van omgevingsvariabelen, met behulp van de regeloptie ":env".
· Verschillende oplossingen voor signaalverwerking.
· Nieuw commando "makeppclean" dat gegenereerde bestanden efficiënt verwijdert zonder te laden
maakbestanden.
· Geporteerd naar MinGW.
· Nieuw gebouwde caches, om bestanden die identiek zijn in de cache op te slaan. Dit betekent dat als u een
bestand en terugzetten, dan kun je makepp terug laten gaan naar het onmiddellijk voorafgaande .o
bestand zonder opnieuw op te bouwen. Of u kunt builds van identieke bestanden delen tussen verschillende
bron bomen. Nieuw toegevoegde groep build-caches voor grote setups, mogelijk verspreid over
meerdere machines.
· Minimaal Perl 5.6 is vereist.
Versie 1.40 (December 2004)
Met dank aan Anders Johnson en Daniel Pfeiffer voor hun belangrijke codebijdragen hieraan
vrij.
· Te veel bugfixes om afzonderlijk op te noemen. Waarschijnlijk zijn de meest opvallende oplossingen die moeten worden aangebracht
het werkte aanzienlijk betrouwbaarder op Cygwin, maar er waren ook oplossingen voor variabele
uitbreiding, scannen, opslagplaatsen, enz.
· Herschreven opdrachtparser en bestandsscannerarchitectuur, zodat deze gemakkelijker wordt
uitbreidbaar. Makepp ondersteunt nu bovendien Verilog (een taal die wordt gebruikt voor chipontwerp).
naar C++ en Fortran. Het zou relatief eenvoudig moeten zijn om extra steun te verlenen
talen. (Anders Johnson)
· Nieuw commando "makeppclient" waarmee builds sneller kunnen starten. (Daniel Pfeiffer)
· Als u Perl 5.6.0 of hoger heeft, wordt de HTML-documentatie nu geleverd met de nieuwe werking
camel-logo en syntaxisaccentuering in de voorbeelden. (Daniel Pfeiffer)
· Talrijke correcties en verbeteringen aan de documentatie. (Grotendeels Anders Johnson)
· Ondersteuning voor de "define"-instructie van GNU make om variabelewaarden met meerdere regels te definiëren.
· $(PWD) en $(CURDIR) werken nu zoals in GNU make.
· Nieuwe "--keep-repository-links" optie om te voorkomen dat makepp alle soft
koppelingen die het creëert bij het maken van repository's.
· Nieuwe "--assume-old", "--assume-new" en "--dont-build" opties, en ondersteuning voor de
"-n" optie.
· Ondersteuning voor regels met dubbele dubbele punten is enigszins verbeterd, zodat we makefiles kunnen verwerken
zonder veel problemen door MakeMaker geproduceerd.
· Syntaxis toegevoegd voor het uitvoeren van Perl-code als statement en in regels "perl { ... }" of
"makeperl { ... }". Functies toegevoegd voor het evalueren van Perl-instructies "$(perl ... )" of
"$(makeperl...)". Verklaring "makesub { ... }" toegevoegd. (Daniel Pfeiffer)
· Korte opties kunnen nu direct worden gevolgd door een argument zoals in -j4. Gedocumenteerde opties
--jobs, --doorgaan, --makefile, --wat-als, --neem-nieuw, --nieuw-bestand, --neem-oude &
--oud-bestand worden nu echt geaccepteerd. (Daniel Pfeiffer)
Versie 1.19 (Juli 2003)
Speciale dank aan Matthew Lovell en Chris van Engelen voor veel suggesties en
problemen in de code opsporen.
· Documentatie is gereorganiseerd zodat zowel man-pagina's als HTML-pagina's kunnen worden geproduceerd,
en er is een kookboek/FAQ toegevoegd (zie makepp_cookbook).
· Er is een "configure"-script toegevoegd, zodat de installatie meer op andere softwareproducten lijkt
vanuit het oogpunt van de gebruiker.
· De functie "$(origin )" van GNU make wordt nu ondersteund.
· Doelspecifieke variabelen worden nu ondersteund zoals bij GNU, behalve dat dit niet het geval is
hun waarden doorgeven aan afhankelijkheden.
· Nieuwe functies "$(find_upwards )" en "$(relative_filename )" (bijgedragen door Matthew
Lovell) en "$(relative_to )".
· In compilatiecommando's worden "-I dir" en "-L dir" nu ondersteund en werken ze net als
"-Idir" en "-Ldir".
· Hercompilatie van C-bestanden zal nu plaatsvinden als er een commentaar van meerdere regels is ingevoegd, of als
de regelnummering is op enigerlei wijze gewijzigd. Voorheen negeerde het nieuwe regels in computers
de controlesom, wat betekende dat een wijziging die van invloed was op de debugger-informatie mogelijk geen a
hercompilatie.
· Een bug in "$(shell )" die ervoor zorgde dat het af en toe een null-tekenreeks retourneerde (vooral
toen het systeem zwaar belast was) is opgelost.
· Onleesbare bestanden of mappen onderdrukken het importeren uit opslagplaatsen, maar dat is niet het geval
aangevuld met jokertekens.
· Een paar andere kleine bugs zijn opgelost.
Versie 1.18 (Januari 2002)
De belangrijkste verandering was ondersteuning voor de Cygwin-bouwomgeving. Je kunt nu rennen
makepp met de Cygwin-versie van Perl; Ik denk niet dat het goed zal werken met de
native Windows-versie van Perl nog niet.
In deze release zijn nog een aantal andere bugfixes aangebracht.
Versie 1.10 (Februari 2001)
De belangrijkste verandering in deze versie is dat makepp een veel groter aantal kan accepteren
van makefiles zonder opdrachtregelopties vanwege enkele wijzigingen in het
implementatie van recursieve make. Er zijn een paar kleine verbeteringen in de GNU-make-up
compatibiliteit en een lichte verbetering in het geheugengebruik.
Er zijn verschillende voor de gebruiker zichtbare wijzigingen:
· "c_compilation_md5" is nu de standaard handtekeningmethode. Dit betekent dat standaard
makepp zal C/C++-modules niet opnieuw compileren als alleen witruimte of commentaar is gewijzigd.
· Er is een nieuwe handtekeningmethode "md5" toegevoegd, die een MD5-controlesom op de bestanden uitvoert
inhoud. Dit is standaard niet ingeschakeld; makepp gebruikt nog steeds de oorspronkelijke methode
("exact_match") voor alle andere bestanden dan C/C++-bronbestanden.
Vanwege deze wijzigingen zal makepp alles opnieuw compileren de eerste keer dat u het uitvoert.
Versie 1.05
Naast bugfixes heeft deze versie één voor de gebruiker zichtbare wijziging. De
De opdrachtregeloptie "--norc-substitution" is geïntroduceerd om compatibele verwerking van
witruimte in makefiles.
Versie 0.99 (Januari 2001)
Naast talloze bugfixes heeft deze versie verschillende voor de gebruiker zichtbare wijzigingen:
· Meerdere doelen voor een regel worden nu behandeld op een manier die beter aansluit bij de oude regels
maakbestanden. Makepp heeft een heuristisch algoritme om te raden of de regel verondersteld wordt
om alle doelen in één keer te bouwen of dat de regel meerdere keren moet worden aangeroepen.
Ik denk niet dat dit bestaande makefiles kapot zal maken, maar makepp zou dit wel moeten toestaan
werk met veel meer makefiles ontworpen voor Unix make.
· De optie "--traditional-recursive-make" kan worden gebruikt voor oudere make-bestanden die
recursieve aanroepen van make op een manier die niet werkte met de standaardwaarde van makepp
implementatie.
· Opslagplaatsen werken nu met libtool.
· Variabele-instellingen zijn nu toegestaan met de instructie "load_makefile" en met
recursief maken.
Versie 0.95
Deze versie heeft verschillende voor de gebruiker zichtbare wijzigingen:
· Er is een tutorial toegevoegd over het schrijven van makefiles voor makepp.
· GNU make style conditionals (ifeq/ifneq/ifdef/ifndef) worden nu ondersteund, net als de
"$(if )"-functie.
· Standaard komt het jokerteken "%" nu alleen overeen met bestanden in een map; "%.c" is nu
gelijk aan "*.c", niet "**/*.c". De reden voor deze verandering was dat regels bijna
Ik hoefde nooit de ingewikkeldere jokertekens te gebruiken, en dit was vaak onnodig
mappen waarin gezocht moet worden. U kunt het oude gedrag verkrijgen door op te geven
"--procent-subdirs" op de opdrachtregel. (Ik ben benieuwd hoe mensen hierover denken
wijziging. Laat het me weten als u goede redenen heeft om dit op één of andere manier te doen
ander.)
· Standaard worden bestanden gemaakt vanuit elke map die een afhankelijkheid bevat, of dat is
gezocht met een jokerteken, worden automatisch geladen. Meestal betekent dit dat je het niet nodig hebt
helemaal geen "load_makefile"-instructies. Als dit problemen oplevert, kunt u dit uitschakelen
impliciet laden van makefiles door "--no-implicit-load" toe te voegen aan de opdrachtregel.
(Ik ben benieuwd of mensen het impliciet laden van makefiles wel of niet leuk vinden.)
· Een doelwit kan nu nep worden verklaard op dezelfde lijn die het doelwit definieert met behulp van
de nieuwe "$(phony )"-functie, zoals deze:
$(nep alles): programma_1 programma_2
De functie "$(phony)" retourneert eenvoudigweg zijn argumenten, maar markeert ze als nep
doelen. U kunt nog steeds de oudere syntaxis gebruiken die er als volgt uitziet:
alles: programma_1 programma_2
.PHONY: allemaal
De functie "$(phony)" is een poging om de leesbaarheid van makefiles te verbeteren. ID kaart
verwelkom andere suggesties, aangezien ik nog steeds niet helemaal tevreden ben met de syntaxis.
Versie 0.90
Om functies zoals parallelle productie te ondersteunen, moesten de meeste interne onderdelen dat wel zijn
gereorganiseerd of herschreven. Het resultaat is veel schoner en hopelijk betrouwbaarder.
Bugs, te veel om op te noemen, zijn opgelost. Om de betrouwbaarheid te helpen garanderen, wordt een test uitgevoerd
suite is ontwikkeld. Het test nog niet absoluut alles, maar het test wel
de meeste dingen, en ik hoop het in de toekomst uitgebreider te maken. Je kunt het uitvoeren door te typen
"makepp test" in de makepp-distributiemap. Als een ongewijzigde makepp mislukt, wordt het
testsuite, laat het me weten zodat ik het kan repareren.
Er zijn veel nieuwe functies:
· Opslagplaatsen worden nu ondersteund.
· Het is nu mogelijk om verschillende methoden op te geven voor het berekenen en vergelijken van bestanden
handtekeningen. U kunt bijvoorbeeld een MD5-controlesom gebruiken, waarbij opmerkingen en
witruimte, of u kunt alleen eisen dat het doel nieuwer is dan de afhankelijkheden
(de methode die de traditionele mensen gebruiken).
· Makefiles worden alleen opnieuw opgebouwd als ze ouder zijn dan hun afhankelijkheden; een andere
In dit speciale geval wordt de handtekeningmethode gebruikt.
· Parallelle builds worden nu ondersteund, hoewel dit nog steeds een experimentele functie is. Zien
de optie "-j".
· Het is nu mogelijk om uw eigen functies te schrijven. Zie de "sub"-verklaring en
makepp_extending voor details.
· Bestandsnamen met tekens zoals dubbele punt of spatie worden nu ondersteund met een nieuwe aanhalingstekens
syntaxis.
· Er zijn synonieme, minder cryptische namen voor automatische variabelen geïntroduceerd
moedig beter leesbare makefiles aan.
· Makepp onthoudt nu de architectuur van de machine waarop je hebt gebouwd, en herbouwt deze indien nodig
architectuur is anders.
· Directory's kunnen nu doelen of afhankelijkheden zijn; een eerdere beperking die allemaal
mappen moesten bestaan voordat de start van de build werd opgeheven.
· Makepp schrijft nu een logbestand met de naam ".makepp_log", waarin wordt uitgelegd waarom het opnieuw is opgebouwd
alles. Dit is uiterst handig bij het debuggen.
· De gebruikelijke "-k"-optie om door te gaan met bouwen, zelfs als er een fout optreedt, is nu
ondersteund.
· De documentatie is gereorganiseerd en uitgebreid.
Er zijn ook (helaas) enkele incompatibiliteiten met eerdere versies:
· Het bestandsformaat voor het opslaan van informatie over de laatste build is gewijzigd. Dus makepp
zal erop aandringen alles opnieuw op te bouwen de eerste keer dat u de nieuwe versie uitvoert.
· load_makefile ondersteunt niet langer doelen of variabele-instellingen. Het ondersteunt nu
het laden van een lijst met makefiles in plaats van slechts één, dus de schakelaar "-F" is nu
onnodig (en niet langer gedocumenteerd).
· Recursief make negeert nu variabele-instellingen op de opdrachtregel. Dit is noodzakelijk
om makefiles op een consistente manier te laden.
· "$(INFERRED_OBJS)" wordt niet langer ondersteund (omdat het geen goed ontworpen interface was
Hoe dan ook). Gebruik in plaats daarvan de nieuwere functie "$(infer_objects)".
· $_ wordt niet langer ondersteund. Gebruik in plaats daarvan '$(foreach)'.
· Een paar zelden gebruikte GNU-make-opties zoals "-s", "-n" en "-q" zijn niet langer beschikbaar
ondersteund vanwege interne architectuurwijzigingen. "-n" zal waarschijnlijk weer ondersteund worden
in toekomstige uitgaven.
· Er is niet langer een manpagina beschikbaar omdat de documentatie niet langer in de
Perl-pod-formaat. Gebruik in plaats daarvan de HTML-documentatie.
· Het automatische opschoningsdoel wordt niet langer ondersteund. Een betere manier om dit te doen is met
"$(alleen_targets)".
Gebruik makepp_release_notes online met behulp van onworks.net-services