[linux-l] Re: Makefile

Rainer Flicker r.flicker at nexgo.de
Di Dez 3 23:31:20 CET 2002


Hallo,


> nee, libs, also libodc++ oder sowas, die libtool verwenden. make
> libtool z.B. geht meistens schief, bzw. klappt das, aber das
> libtool funktioniert dann nicht etc. Na ja, ich kann es aber
> nicht bedienen.
"make libtool" ist aber kein Standard-target. Libtool selber wird
eigentlich erst von configure aus "ltconfig" und "ltmain.sh"
erzeugt (wird manchmal trotzdem in Paketen mitgeliefert). Und
libtool selber aufzurufen, sollte man lieber lassen. Dafür gibt
es glücklicherweise ja automake und autoconf.

> Gut, daraus folgt, das das Makefile.in schon falsch ist. 
Da die packages extern sind, können eigentlich auch keine
Abhängigkeiten in Makefile.in stehen, denn  diese
Abhängigkeiten zu externen packages werden erst mit
"./configure --with-package=/anderswo/sonstwas" in die
Makefiles geschrieben. So sollte es jedenfalls sein. "configure"
sollte auch überprüfen, ob die benötigten Pakte auch gefunden
werden. Mit "AC_CHECK_LIB" in "configure.in" kann man nach
libs suchen. Wenn das nicht reicht, muss man eigene M4-Macros
schreiben.

> (da man in der Dist ja nur
> configure aufruft, nicht jedoch automake & co). Und genau das ist
> mein Problem. In einer Dist funktioniert autoconf wieder nicht,
> weil da M4 Macros verwendet werden, die nicht zu der package
> gehören, und ich keine autoconf Macros global installiere
> möchte, nur um autoconf sagen zu können. 
Autoconf und automake brauchen ja nur auf dem Entwicklerrechner
installiert sein. Wenn Du allerdings auf eines der beiden Programme
verzichtest, wird es schwierig. Denn normalerweise schreibt man
"Makefile.am", daraus erzeugt automake die "Makefile.in", aus der
dann "configure" das "Makefile" erzeugt. "configure" wird von autoconf
aus "configure.in" erzeugt.

siehe "info autoconf":
  your source files --> [autoscan*] --> [configure.scan] --> configure.in

  configure.in --.   .------> autoconf* -----> configure
                 +---+
  [aclocal.m4] --+   `---.
  [acsite.m4] ---'       |
                         +--> [autoheader*] -> [config.h.in]
  [acconfig.h] ----.     |
                   +-----'
  [config.h.top] --+
  [config.h.bot] --'

                         .-------------> config.cache
  configure* ------------+-------------> config.log
                         |
  [config.h.in] -.       v            .-> [config.h] -.
                 +--> config.status* -+               +--> make*
  Makefile.in ---'                    `-> Makefile ---'

> cd package2-*
> ./configure --with-package1=/opt/ingenico/package1
> (erzeugt u.A. CFLAGS="-I/opt/ingenico/package1/include")
> 
> und dann:
> 
> make
> 
> kommt error:
> no rule to make target ../package1/src/ingenico/de/mein_include.h
Dies sollte am besten schon "configure" checken mit z.B. AC_HAVE_HEADERS

Grüße

Rainer





Mehr Informationen über die Mailingliste linux-l