Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Autotools zweites Verzeichnis einbinden

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177

    Autotools zweites Verzeichnis einbinden

    Hi!

    Ich bräuchte bitte mal wieder Eure Hilfe. Ich habe ein Projekt mit den Autotools erstellt, funktioniert wunderbar, und möchte jetzt noch ein Verzeichnis images installieren lassen. Deshalb habe ich die Makefile.am und configure.ac im Hauptverzeichnis geändert:

    configure.ac
    ...
    AC_CONFIG_FILES([ Makefile
    images/Makefile
    src/Makefile
    ])
    ...
    Makefile.am
    SUBDIRS = images src
    und im images/Makelife.am
    imagesdir=$(datadir)/images
    images_DATA = \
    photo.png
    Doch wenn ich dann make ausführen möchte bekomme ich die Fehlermeldung:
    Making all in images
    Entering Directory .../images
    Für das Ziel >>all<< ist nichts zu tun
    Was mache ich falsch? Könnt ihr mir bitte dabei helfen.

    viele Grüße
    dml

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Läuft "autoreconf -fvi" ohne Fehler durch?
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Eigentlich ja
    autoreconf -ifv
    autoreconf: Entering directory `.'
    autoreconf: configure.ac: not using Gettext
    autoreconf: running: aclocal --force
    autoreconf: configure.ac: tracing
    autoreconf: configure.ac: not using Libtool
    autoreconf: running: /usr/bin/autoconf --force
    autoreconf: running: /usr/bin/autoheader --force
    autoreconf: running: automake --add-missing --copy --force-missing
    autoreconf: Leaving directory `.'
    Das ist ja auch was mich verwundert, wenn ich kein zweites Verzeichnis hinzufüge, funktioniert alles wunderbar, doch so bricht es bei make ab.

    Ich habe als Beispiel auch gftp genommen, die machen es nicht anders, keine Angabe von all irgendwo, nur das sie die Optionen für das Debianpaket schon hinzugefügt haben.
    Geändert von dml (26-09-2010 um 11:12 Uhr)

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ich glaube AC_OUTPUT fehlt.
    Setze hinter AC_CONFIG_FILES das AC_OUTPUT in die nächste Zeile.
    An sonsten mal den Code von configure.ac zeigen.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Nein leider nicht, aber wäre schön gewesen.
    Vorab schon mal ein großes Dankeschön, das du mir dabei hilfst, vorallem auch am Wo.ende!

    # -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    # m4_include(m4/autotroll.m4)

    AC_PREREQ(2.61)
    AC_INIT(program, 1.0.0, host@local)
    AC_CONFIG_SRCDIR([src/settings.cpp])
    AC_CONFIG_HEADER([config.h])
    AM_INIT_AUTOMAKE([-Wall -Werror foreign])

    # Checks for programs.
    AC_LANG([C++])
    AC_PROG_CXX
    #AC_PROG_CC
    #AC_PROG_LIBTOOL
    AC_PROG_INSTALL
    AC_PROG_LN_S
    AC_PROG_MAKE_SET
    AC_PROG_RANLIB

    AC_CHECK_LIB(QtCore,qt_addObject,[],[AC_MSG_ERROR("Libary QtCore not found!")])
    AC_CHECK_LIB(QtGui,_init,[],[AC_MSG_ERROR("Libary QtGui not found!")])
    AC_CHECK_LIB(QtWebKit,_init,[],[AC_MSG_ERROR("Libary QtWebKit not found!")])


    #PKG_PROG_PKG_CONFIG(0.20)

    #PKG_CHECK_MODULES(Qt, [QtCore >= 4.3, QtGui >= 4.3] )
    #AC_SUBST(Qt_CFLAGS)
    #AC_SUBST(Qt_LIBS)

    # Checks for header files.

    # Checks for typedefs, structures, and compiler characteristics.
    AC_HEADER_STDBOOL
    AC_C_CONST
    AC_C_INLINE

    # Checks for library functions.
    AC_HEADER_STDC
    AC_CHECK_FUNCS([mkdir rmdir])

    AC_CONFIG_FILES([Makefile
    images/Makefile
    src/Makefile])
    AC_OUTPUT

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Auch wenn einige Macros veraltet sind so sollte das funktionieren.
    Das einzige was mir noch aufgefallen ist, das im Code des ersten posts die Tabulaturen im Makefile fehlen. Nach geslashten Zeilenumbrüchen sollte immer mindestens ein TAB folgen.

    Die Fehler Meldung "Für das Ziel >>all<< ist nichts zu tun" besagt eigentlich auch nichts falsches so lange keine Quellen oder Sourcen übersetzt werden sollen. Ein "make DESTDIR=/tmp install" sollte also deine Images nach "Auch wenn das kein Linux Standard ist " $(datadir)/images Installieren.

    PS: Du verwendest Qt Bibliotheken oder dein Programm soll ein auf Qt Basiertes Programm sein. Hier ist Eigentlich cmake die bessere Wahl weil sie Macros für den moc und uic Compiler anbieten. Mit Autoconf ist das etwas komplizierter und erfordert einiges an Kenntnis über die Automake Eigenheiten.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Die Tabs haben leider auch nicht geholfen und habe ich momentan leider keine Zeit mehr zum Weiterarbeiten. cmake will ich eigentlich erstmal nicht verwenden, da ich erst einmal die Autotools richtig können will, so kann ich dann wenigstens eines und zwei nur ein bisschen. Mit Qt binn ich eigentlich gut durchgekommen.
    Vielen Dank für Deine Unterstützung!

  8. #8
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Ja das stimmte, es war damals für ein Qt-Programm gedacht. Doch auch generell tut sich mir inzwischen die Frage auf, wie ich .so Bibliotheken richtig mit einbinde. _CXXFLAGS sind glaube ich eher Flickschusterei. Und wenn ich _LIBADD verwende, fehlen mir ja immer noch die Header zu den Bibliotheken und will ich auch keine Bibliothek mit Libtools erstellen. Doch wie binde ich diese korrekt ein, bzw. mit _HEADERS jede einzelne qt Hederdatei aufzurufen, ist dann doch recht umfangreich.

    Bzw:
    Code:
    # Makefile.am 
     
    bin_PROGRAMS = \
    	pointergui 
       
    pointergui_SOURCES = \
    	arraynormal.h \
    	arraynormal.cpp \
    	buttonbox.h \
    	buttonbox.cpp \
    	colorbox.h \
    	colorbox.cpp \
    	klasse.h \
    	klasse.cpp \
    	main.cpp \
    	mask.h \
    	mask.cpp \
    	pointerarray.h \
    	pointerarray.cpp \
    	pointerclass.h \
    	pointerclass.cpp \
    	pointernormal.h \
    	pointernormal.cpp \
    	stacklayout.h \
    	stacklayout.cpp \
    	variablenormal.h \
    	variablenormal.cpp \
    	moc_colorbox.cpp
    
    pointergui_LDADD = \
    	-lQtCore \
    	-lQtGui
    
    pointerguidir = /usr/share/pointer
    
    nodist_pointergui_HEADERS = \
    	HEADERS/QT \
    	HEADERS/QTCore \
    	HEADERS/QTGui
    
    #pointergui_CXXFLAGS = \
    #	-I/usr/include/qt4/QtCore \
    #	-I/usr/include/qt4/QtGui \
    #	-I/usr/include/qt4 \
    #	-lQtCore \
    #	-lQtGui
    Fehler:
    Code:
    make[3]: Entering directory `/home/kanotix/autotools/source/qt'
    g++ -DHAVE_CONFIG_H -I. -I../..     -g -O2 -MT arraynormal.o -MD -MP -MF .deps/arraynormal.Tpo -c -o arraynormal.o arraynormal.cpp
    In file included from arraynormal.h:7,
                     from arraynormal.cpp:1:
    mask.h:6:18: error: QLabel: Datei oder Verzeichnis nicht gefunden

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Fehlender Pfad zur STL Header Definition.
    Verwende die PKG_CONFIG Macros in deiner configure.*
    Im Anhang findest du eine von mir erstellte Macro.
    In der Configure z.B. einfach:
    Code:
    dnl -----------------------------------------------
    dnl QT4 >= 4.5.0 : http://www.trolltech.com
    dnl -----------------------------------------------
    AC_CHECK_QT4(["4.4.3"],"QtCore QtGui QtXml QtDBus QtNetwork QtSvg")
    In der Makefile.am folgendes einfügen:
    Code:
    RCC = @RCC@
    MOC = @MOC@
    MOC_INCDIR = @srcdir@
    
    projektname_CXXFLAGS =  @QT_CFLAGS@
    projektname_CPPFLAGS = -I. -I@top_srcdir@/src
    
    BUILT_SOURCES = \
    	qrc_beispiel.cpp \
    	moc_beispiel.cpp
    
    nodist_projektname_SOURCES = $(BUILT_SOURCES)
    
    moc_%.cpp: %.h
    	$(MOC) -I${MOC_INCDIR} -o $@ $<
    
    qrc_%.cpp: %.qrc
    	$(RCC) -name $* -o $@ $<
    
    CLEANFILES = $(BUILT_SOURCES)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  10. #10
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Erst einmal ein großes Dankeschön! Doch werden wohl noch ein paar Tage vergehen, bis ich es ein mein Projekt eingearbeitet habe. Doch danach dürften die Autotools mir keine Probleme mehr, auf dem Weg zu einem fertigen Programm, bereiten.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •