Emancipate Skrevet 28. juli 2007 Del 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? Lenke til kommentar
elgull Skrevet 31. juli 2007 Del 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. Lenke til kommentar
Emancipate Skrevet 31. juli 2007 Forfatter Del 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. Lenke til kommentar
elgull Skrevet 1. august 2007 Del 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 Lenke til kommentar
Emancipate Skrevet 1. august 2007 Forfatter Del Skrevet 1. august 2007 Da virka det, ja. Men ikke hvis jeg inkluder gtk/gtk.h. Lenke til kommentar
hextremist Skrevet 30. desember 2007 Del 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. Lenke til kommentar
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å