Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
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
  • 4 måneder senere...
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...