Emancipate Skrevet 28. juli 2007 Skrevet 28. juli 2007 Hvordan bruker jeg automake/autoconf og slektninger? Som et eksempel skal jeg kompilere et c++-program som bruker gtk. Hvordan kan jeg lage en makefil automatisk med disse programmene?
elgull Skrevet 31. juli 2007 Skrevet 31. juli 2007 Hvordan bruker jeg automake/autoconf og slektninger? Som et eksempel skal jeg kompilere et c++-program som bruker gtk. Hvordan kan jeg lage en makefil automatisk med disse programmene? 9162970[/snapback] Først lager du en fil kalt configure.in . Denne skal inneholde noe omtrent som: configure.in: AC_INIT(navnetpaaenavkildekodefilenedine.c) AM_INIT_AUTOMAKE(prosjektnavn, versjonsnummer) AC_PROG_CC # sjekker for c-compiler AC_PROG_CXX # sjekker for c++-compiler AC_OUTPUT(Makefile) Deretter lager du en fil kalt Makefile.am i samme mappe. Denne skal inneholde dette: Makefile.am: bin_PROGRAMS navnetpaadinkjorbarefil navnetpaadinkjorbarefil_SOURCES navnetpaakildekodefilendin.c Deretter kan du i shell skrive disse kommandoene og du vil få ett fullt prosjekt med alle nødvendige filer: aclocal autoconf automake -a touch NEWS README AUTHORS ChangeLog automake tada!! da var det klart for å kjøre : ./configure , make og make install. For å legge til sjekking av gtk og sånn må du bare legge til noen linjer i configure.in-fila. Noe artig er at etter at du har kjørt ./configure, kan du kjøre "make distcheck" og automatisk få generert en tarball.
Emancipate Skrevet 31. juli 2007 Forfatter Skrevet 31. juli 2007 Når jeg gjør som du sier får jeg denne feilmeldinga når jeg kjører make: Makefile:218: *** missing separator. Stop.
elgull Skrevet 1. august 2007 Skrevet 1. august 2007 Det var fordi jeg glemte to "=" tegn. Sånn skal Makefile.am være: bin_PROGRAMS = navnetpaadinkjorbarefil navnetpaadinkjorbarefil_SOURCES = navnetpaakildekodefilendin.c
Emancipate Skrevet 1. august 2007 Forfatter Skrevet 1. august 2007 Da virka det, ja. Men ikke hvis jeg inkluder gtk/gtk.h.
hextremist Skrevet 30. desember 2007 Skrevet 30. desember 2007 Da virka det, ja. Men ikke hvis jeg inkluder gtk/gtk.h. Antar du bruker gtkmm, og ikke gtk direkte siden du programmerer i C++? Sleng dette inn i configure.in (eller configure.ac): PKG_CHECK_MODULES(GTKMM, gtkmm-2.4) AC_SUBST(GTKMM_CFLAGS) AC_SUBST(GTKMM_LIBS) Deretter bruker du $(GTKMM_CFLAGS) ved kompilering og $(GTKMM_LIBS) for linking. GTKMM kan byttes ut med en annen streng, gjerne noe som avspeiler navnet paa programmet ditt.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå