Dit is de opdracht ppkg-configp die kan worden uitgevoerd in de gratis hostingprovider OnWorks met behulp van een van onze verschillende gratis online werkstations, zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
PkgConfig - Pure-Perl Core-Only vervanging voor pkg-config
KORTE INHOUD
As a vervanging besteld, "pkg-configuratie"
$ ppkg-config --libs --cflags --static gio-2.0
#outputs (regels kunstmatig opgedeeld voor leesbaarheid):
# -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
# -pthread -lgio-2.0 -lz -lresolv -lgobject-2.0
# -lgmodule-2.0 -ldl -lgthread-2.0 -pthread -lrt -lglib-2.0
"pkg-config.pl" kan worden gebruikt als alias voor "ppkg-config" op platforms die dit ondersteunen.
Het kan ook worden geïnstalleerd als "pkg-config", hoewel dit niet wordt aanbevolen als uw systeem
een native "pkg-config".
Vergelijk met:
$ pkg-config --libs --cflags --static gio-2.0
#uitvoer ( "" ):
# -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
# -pthread -lgio-2.0 -lz -lresolv -lgobject-2.0 -lgmodule-2.0
# -ldl -lgthread-2.0 -lrt -lglib-2.0
Vanaf ander Perl module
gebruik PkgConfig;
mijn $o = PkgConfig->find('gio');
als ($o->errmsg) {
#fout verwerken
} Else {
mijn $prefix = $o->get_var('prefix');
mijn @cflags = $o->get_cflags;
mijn @ldflags = $o->get_ldflags;
}
PRODUCTBESCHRIJVING
"PkgConfig" biedt een pure Perl-, core-only vervanging voor het hulpprogramma "pkg-config".
Dit is geen beschrijving van het gebruik van "pkg-config", maar eerder een beschrijving van de
verschillen tussen de C-versie en de Perl-versie.
Terwijl "pkg-config" een gecompileerd binair bestand is dat is gekoppeld aan glib, heeft de pure-perl-versie geen
aan deze vereiste, en zal overal worden uitgevoerd waar Perl ( >= 5.6 ) dat doet.
De belangrijkste ondersteunde opties zijn de algemene "--libs", "--cflags", "--static", "--exists" en
"--modversie".
SCRIPT OPTIES
GEBRUIK
[ --opties ]
ARGUMENTEN
Standaard moet een bibliotheeknaam worden opgegeven, tenzij een van de opties --version of --real-version is opgegeven.
gespecificeerd.
De uitvoer zou normaal gesproken geschikt moeten zijn om door te geven aan uw favoriete compiler.
--lib
(Ook) linkervlaggen afdrukken. Afhankelijkheden worden in volgorde doorkruist. Afhankelijkheden op het hoogste niveau zullen
verschijnen eerder in de opdrachtregel dan afhankelijkheden op het laagste niveau.
--libs-only-L
Geeft het -L/-R deel van "--libs" weer. Het definieert het zoekpad van de bibliotheek, maar zonder bibliotheken om
link met.
--libs-only-l
Geeft het -l-gedeelte van "--libs" weer.
--libs-only-other
Drukt het deel van "--libs" af dat niet wordt gedekt door "--libs-only-L" en "--libs-only-l", zoals
"--pthread".
--lijst alles op
Maak een lijst van alle bekende pakketten.
--cvlaggen
(Ook) compiler- en C-preprocessorvlaggen afdrukken.
--cflags-only-I
Drukt het -I-gedeelte van "--cflags" af
--cflags-alleen-andere
Drukt de delen van "--cflags" af die niet onder "--cflags-only-I" vallen.
--modversie
Print de versie van een bepaald pakket.
--statisch
Gebruik extra afhankelijkheden en bibliotheken als u een koppeling maakt met een statische versie van de gevraagde
bibliotheek
--bestaat
Retourneert succes (0) als het pakket in het zoekpad bestaat.
--met-pad=PAD
Voeg "PATH" toe aan de lijst met zoekpaden die ".pc"-bestanden bevatten.
Deze optie kan meerdere keren worden opgegeven met verschillende paden, en ze zullen allemaal
toegevoegd.
--env-alleen
Met deze optie kunt u: Slechts paden die zijn opgegeven in "PKG_CONFIG_PATH" worden herkend en alle harde-
Gecodeerde standaardwaarden worden genegeerd.
--raad-paden
Roep "gcc" en "ld" aan om de standaardlinker te bepalen en paden op te nemen. Standaardpaden worden
uitgesloten van expliciete -L en -I vlaggen.
--define-variabele=VARIABELE=WAARDE
Definieer een variabele, overschrijf elke dergelijke variabeledefinitie in het .pc-bestand en sta toe
uw waarde om te interpoleren met later gebruik.
--variabele=VARIABEL
Hiermee wordt de waarde van een variabele geretourneerd die is gedefinieerd in het .pc-bestand van een pakket.
--print-variabelen
Alle gedefinieerde variabelen afdrukken die in de .pc-bestanden zijn gevonden.
--versie
De doelversie van "pkg-config" die door dit script wordt geëmuleerd
--echte-versie
De werkelijke versie van dit script
--debuggen
Foutopsporingsinformatie afdrukken
--stilte-fouten
Fouten uitschakelen. Dit is de standaard voor non-libs/cflag/modversion-argumenten
--afdrukfouten
Print fouten naar STDERR en heeft voorrang op "--silence-errors"
--korte fouten
Genegeerd, maar erkend voor compatibiliteit.
--fouten-naar-stdout
Print fouten naar STDOUT en heeft voorrang op "--print-errors"
MILIEU
de variabelen "PKG_CONFIG_PATH" en "PKG_CONFIG_LIBDIR" worden gerespecteerd en gebruikt als een dubbele punt
gescheiden (door puntkomma's gescheiden op Windows) lijst met mappen die ".pc"-bestanden bevatten.
Andere omgevingsvariabelen die zowel door "pkg-config" als PkgConfig worden herkend, zijn:
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
PKG_CONFIG_ALLOW_SYSTEM_LIBS
Als Win32API::Registry is geïnstalleerd, zal PkgConfig op Windows (maar niet op Cygwin) ook
raadpleeg deze registersleutels. De namen worden genegeerd, maar de waarden zijn paden die
".pc"-bestanden.
HKEY_HUIDIGE_GEBRUIKER\Software\pkgconfig\PKG_CONFIG_PATH
HKEY_LOCAL_MACHINE\Software\pkgconfig\PKG_CONFIG_PATH
De ondersteuning van het register moet als enigszins experimenteel worden beschouwd, onder voorbehoud van wijzigingen in de
toekomst, hoewel niet zonder goede reden. De redenatie voor deze waarschuwing is dat dit
De functie is op verschillende plaatsen gedocumenteerd, maar ik heb nog geen werkende versie gevonden die
implementeert deze functie.
MODULE OPTIES
PkgConfig->vinden
mijn $result = PkgConfig->find($libary, %options);
Zoek een bibliotheek en retourneer een resultaatobject. $library kan een enkele naam zijn van een
bibliotheek, of een verwijzing naar een reeks bibliotheeknamen
De opties hebben de vorm van hash-sleutels en waarden, en het volgende wordt herkend:
"zoekpad"
"zoekpad_overschrijven"
Voeg zoekpaden toe naast de paden die zijn opgegeven in $ENV{PKG_CONFIG_PATH}.
waarde is een array-referentie.
de variant "_override" negeert standaardinstellingen (zoals "PKG_CONFIG_PATH").
"bestandspad"
Geeft het volledige pad op van het .pc-bestand dat u wilt laden. Het is niet
moeten in het zoekpad staan (hoewel eventuele afhankelijkheden dat wel moeten doen). Handig als
U weet het volledige pad van het exacte .pc-bestand dat u wilt.
"cvlaggen_uitsluiten"
"uitsluiten_ldvlaggen"
"uitsluiten_cflags_override"
"uitsluiten_ldvlaggen_overschrijven"
Sommige ".pc"-bestanden specificeren standaard compiler- en linkerzoekpaden, bijvoorbeeld
"-I/usr/include -L/usr/lib". Het opgeven ervan op de opdrachtregel kan problematisch zijn, omdat
het verandert de zoekvolgorde drastisch.
De bovenstaande opties zullen de uitgesloten opties toevoegen of vervangen en
gefilterd.
De standaard uitgesloten linker- en compileropties kunnen worden verkregen via
@PkgConfig::DEFAULT_EXCLUDE_LFLAGS en @PkgConfig::DEFAULT_EXCLUDE_CFLAGS,
respectievelijk.
"statisch"
Geef ook statische bibliotheken op.
"geen_recursie"
Maak geen recursieve afhankelijkheden. Dit is handig voor het uitvoeren van versiecontroles.
"VARS"
Definieer een hashref van variabelen om alle variabeledefinities binnen de .pc te overschrijven
bestanden. Dit is equivalent aan de opdrachtregeloptie "--define-variable".
Er wordt een "PkgConfig"-object geretourneerd, dat kan worden bevraagd over de resultaten:
$o->errmsg
Een foutmelding, indien van toepassing. Dit is een string en geeft een fout aan.
$o->pkg_bestaat
Booleaanse waarde, true als het pakket bestaat.
$o->pkg_versie
De versie van het pakket
$o->get_cvlaggen
$o->get_ldvlaggen
Retourneert respectievelijk compiler- en linkervlaggen.
In de lijstcontext retourneren deze methoden een lijst waarbij elk argument is opgesplitst in niet-ontsnapte spaties.
In de lijstcontext wordt respectievelijk een lijst met compiler- en linkervlaggen geretourneerd.
In scalaire context retourneert een string van compiler- en linkervlaggen met spaties en aanhalingstekens
correct ontsnapt.
$o->get_var($naam)
Haal de variabele met de opgegeven naam op.
PkgConfig->Raden
Dit is een klassemethode en zal de hard-gecodeerde standaardlinker vervangen en paden opnemen
met die ontdekt door het aanroepen van ld(1) en cpp(1).
Momenteel werkt dit alleen met GCC-geleverde "ld" en GNU "ld".
INSTALL
De "Makefile.PL" die bij "PkgConfig" wordt geleverd, kan een of meer "--script"-opties bevatten om
wijziging van de naam van het script of de scripts die geïnstalleerd zijn.
--script ppkg-config
Dit is de standaard en werkt op alle platforms
--script pkg-config.pl
Dit is standaard geïnstalleerd op alle platforms, behalve Windows, waar de .pl mogelijk is
de shell in de war brengen en ervoor zorgen dat het script in een teksteditor wordt geopend.
--script pkg-config
Dit is de standaardnaam van de echte "pkg-config" en dus moet je specifiek
Schakel het in als u dat wilt.
--script geen
Installeer geen scripts.
Bijvoorbeeld, installeer alle scriptnamen:
% perl Makefile.PL --script ppkg-config --script pkg-config.pl --script pkg-config
Bijvoorbeeld, installeer geen scripts:
% perl Makefile.PL --script geen
U kunt ook de omgevingsvariabele PERL_PKG_CONFIG_SCRIPTS instellen op de gewenste --script
waarde (scheid elke scriptnaam met een komma ",") om ervoor te zorgen dat upgrades van PkgConfig
hetzelfde doen.
WAARSCHUWINGEN
Op Strawberry Perl gedraagt "ppkg-config" zich alsof Strawberry het systeem is. Dit betekent dat
· Standaard wordt er gezocht naar de .pc-bestanden die bij Strawberry worden geleverd.
· De Strawberry include- en lib-mappen worden gebruikt om de uitsluitingslijsten te berekenen.
Vanaf Strawberry 5.20.0.1 is PkgConfig gebundeld met Strawberry en is "pkg-config"
standaard geïnstalleerd (naast "ppkg-config", hoewel de alias "ppkg-config" NIET is
gebundeld met Strawberry zelf).
Voor meer informatie over hoe u de .pc-bestanden kunt patchen die bij oudere Strawberries zijn meegeleverd, zie de
"README.win32" dat bij deze distributie wordt geleverd.
BUGS
De volgorde van de vlaggen komt niet exact overeen met die van "pkg-config". Van mijn eigen
Observatie, het lijkt erop dat deze module het beter doet, maar ik kan het mis hebben.
In tegenstelling tot "pkg-config" zal de "--exists"-functie van het script een waarde anders dan nul retourneren als een pakket or
een van de afhankelijkheden ontbreekt. Dit verschilt van het gedrag van "pkg-config" dat
controleert alleen de definitie van het pakket zelf (zonder afhankelijkheden).
Gebruik ppkg-configp online met behulp van onworks.net-services
