Archiv verlassen und diese Seite im Standarddesign anzeigen : 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
undefined
25-09-2010, 16:46
Läuft "autoreconf -fvi" ohne Fehler durch?
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.
undefined
26-09-2010, 18:21
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.
Nein leider nicht, aber wäre schön gewesen. :D
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
undefined
27-09-2010, 17:26
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.
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!
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:
# 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:
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
undefined
11-11-2011, 18:22
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:
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:
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)
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.