[linux-l] Re: Makefile

Rainer Flicker r.flicker at nexgo.de
Mo Dez 2 22:36:29 CET 2002


Hallo,

> Da hab ich mich noch nicht "rangetraut", hatte zuviele Probleme
> mit diesem libtool bei 3rd party stuff.
                          ^^^^^^^^^
Compiler / Linker?

> Na ja, in den Depenencies der Sourcen steht dann z.B.
> #include <subdir/hallo.h>
Wenn die Headerfiles innerhalb deines package liegen, dann
müsste es
#include "subdir/hallo.h"
         ^^              ^^
lauten.

> über ../../sonstwas/ wird das dann z.B. bei gcc -E oder -M
> #include <../../sonstwas/subdir/hallo.h>
> Nun ist das automake bißchen langweilig bei dependencies. So in
> etwa: was mit /usr anfängt, ist 'ne System-Dependency, und
> wandert nicht ins Makefile. 
Das Makefile wird allerdings erst von configure aus dem
Makefile.in erzeugt.

Selbst wenn Du /usr/include relativ
> holst, dürfte das knallen. Jedenfalls schreibt automake die
> Abhängigkeiten so (also ../../) in die Makefiles, die dann auch
> bei make dist eingepackt werden. 
Bei "make dist" werden keine Makefiles eingepackt, da diese ja
erst von configure erzeugt werden sollen. In einem Makefile.am
reicht:
bin_PROGRAMS = pkgtest

pkgtest_SOURCES = \
   global.h \
   main.c

Dann machst vielleicht:
> ./configure --with-package=/anderswo/sonstwas
"--with-package" ist für fremde Pakte, wieso sollte es damit
Probleme geben.

> und make schlägt fehl mir:
> No rule to make target ../../sonstwas/subdir/hallo.h
> weil die Abhängigkeiten bei Dists ja eben nicht neu gemacht
> werden. Gaaanz toll. Das fällt einem z.B. auf den Fuß, wenn man
> RPMs bauen möchte, es compiliert dann eben nicht. Kann man
> natürlich hinbiegen (mit absoluten Pfaden arbeiten, z.B.), dann
> compiliert es, wenn es dann zufällig ein
> /home/steffen/work/sonstwas/src/subdir/hallo.h gibt. Aber sowas
> möchte man ja nicht im src-RPM haben! Ich möchte in den Makefiles
> aber keine automatischen dependencies haben, die über mein
> toplevel hinaus zurückgehen (also nix mit $(toplevel)/..). Hab
> ich bis heute nicht hingekriegt. Ein Workaround ist
> AUTOMAKE_OPTIONS=no-dependencies, was natürlich die Arbeit
> umständlich macht, weil man dann eben gar keine Dependencies mehr
> hat, was auch keinen Spaß macht, weil man ständig Linkerfehler
> etc. produziert, wenn man einen Header ändert oder sowas...

Grüße

Rainer





Mehr Informationen über die Mailingliste linux-l