Autotools build scheitert subdir-objects option in AM_INIT_AUTOMAKE

Ich bin momentan an einem C++ Projekt stützt sich auf Rekursives automake um Sie zu bauen.
Ich will bauen, eine gemeinsame Bibliothek und die Makefile.am im src Verzeichnis der Bibliothek sieht aus wie

# ...

# Library name
lib_LTLIBRARIES = libadapter-@[email protected]

# Sources
libadapter_@MY_API_VERSION@_la_SOURCES = \
    $(top_builddir)/src/sourceA.cpp \
    $(top_builddir)/src/sourceB.cpp

# ...

Seit der version 1.14, automake gibt eine Warnung, wenn die subdir-objects option nicht angegeben ist, in AM_INIT_AUTOMAKE im configure.ac. Doch indem die subdir-objects option scheint zu brechen, den build-Prozess mit make beschweren sich über fehlende .Plo - Dateien. Ich habe bereits gesucht das web für Menschen mit ähnlichen Problemen, aber nicht zu finden, die jeder vernünftige Hinweis darauf, wie das Problem zu beheben ohne änderung des Projekts, um eine nicht-rekursive. Jede Hilfe wird sehr geschätzt.

EDIT:
Tauchen Sie tiefer in das problem, ich habe festgestellt, dass ./configure erstellt ein Verzeichnis wörtlich benannt $(top_builddir) unter dem aktuellen source Verzeichnis, das die Bibliothek enthält alle erforderlichen .Plo Dateien für den Aufbau der Bibliothek. In der Makefile fand ich allerdings, dass die .Plo äquivalente von "meine Bibliothek" Quellen (sourceA.cpp und sourceB.cpp im Beispiel) vorangestellt sind include $(top_builddir)/src/$(DEPDIR)/ und $(top_builddir) eine variable ist definiert als ein relative Pfad (nämlich ../../../src/.deps/). Jetzt wird auch klar, warum make nicht finden können, die .Plo - Dateien, weil es sucht im falschen Verzeichnis. Das sieht wie ein mögliches Duplikat von bug #16375. Irgendwelche workarounds?

EDIT 2:
Graben weiter in das web offenbart zwei weitere threads, die das Thema angehen: #1327 und automake-bug. Eine bekannte Abhilfe scheint zu sein, vorbei die --disable-dependency-tracking option ./configure. Zumindest für mich, es funktioniert.

Verwenden Sie relative Pfadangaben für die QUELLEN?
FWIW, ich bekomme diese Meldung auch mit automake 1.14 (nicht-rekursive bauen, keine relativen Pfade). Derzeit ist meine Strategie um die Warnung zu ignorieren, bis ich einen Weg finden, nicht Filmfehler die bauen. Scheint zu bauen OK (bis jetzt...).
Interessant. Verwenden Sie ACLOCAL_AMFLAGS in top-level-Makefile.bin? Was ist mit den AM_INIT_AUTOMAKE Optionen?
Ich benutze ACLOCAL_AMFLAGS nur um das makro Pfad (-I ...). Die AM_INIT_AUTOMAKE Optionen werden durch AUTOMAKE_OPTIONS: 1.11 foreign. Das ist es.
OTOH, vielleicht bin ich nicht relative Pfade zu verwenden. Vielleicht habe ich zu wechseln top_srcdir zu abs_top_srcdir und top_builddir zu abs_top_builddir. Hmm...

InformationsquelleAutor Marcel | 2014-02-06

Schreibe einen Kommentar