Ich habe die neueste, unveröffentlichte Version desctagsQuellcode aus dem SVN-Repository unter Verwendung
svn co https://ctags.svn.sourceforge.net/svnroot/ctags
Ich habe ausgeführt ./configure
, was mit dem folgenden Fehler fehlgeschlagen ist:
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
config.status: error: cannot find input file: config.h.in
[mirror@home ctags-5.7]$ echo $?
1
Dann habe ich eine leere Datei mit dem Namen erstellt config.h.in
und jetzt ./configure
ist es erfolgreich.
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating config.h
[mirror@home ctags-5.7]$ echo $?
0
Das Ausführen make
ist immer noch fehlgeschlagen.
[mirror@home ctags-5.7]$ make
gcc -I. -I. -DHAVE_CONFIG_H -g -O2 -c args.c
In file included from args.c:17:
/usr/include/stdio.h:88: error: two or more data types in declaration specifiers
make: *** [args.o] Error 1
- Warum hat das nicht funktioniert?
- Wie erstelle ich ctags aus dem SVN-Repository?
Antwort1
Dies schlägt fehl, weil (im Gegensatz zu vorbereiteten Quell-Tarballs) das SVN-Repository keine Zwischendateien enthält, die vonAutotools.
Ich bin mit AT oder ctags nicht so vertraut, aber versuchen Sie, automake
und auszuführen, autoconf
bevor Sie es ./configure
erneut ausführen. Das Verfahren befindet sich wahrscheinlich irgendwo in einer INSTALL
Datei oder einem Dokumentationsordner. Vielleicht möchten Sie danach suchen.
Nachtrag:
Laut einer (inoffiziellen)Gentoo ebuild, Laufen autoreconf
sollte reichen.
Nachtrag 2:
Wie gesagt, ich bin kein AT-Guru, mir wurde gesagt, dass es davon weltweit nur eine zweistellige Anzahl gibt.
config.h
ist nicht im SVN-Repository enthalten, da es nicht von einem Menschen geschrieben wurde und nur von den anderen Dateien im Repository abhängt. Die Entwickler müssen es ohnehin oft neu erstellen, wenn sie Dinge ändern, daher wäre es nur eine zusätzliche Datei, die heruntergeladen und dann beim Auschecken von Änderungen sofort gelöscht werden muss.
Auf der anderen SeiteIstin die Tarballs aufgenommen, um das Erstellen der Software weniger mühsam zu machen. Ich glaube, es verhindert auch einige Probleme, wenn Leute andere AT-Versionen haben als die Entwickler. In diesem Fall gibt es keinen wirklichen Nachteil, da es nicht davon abhängt, für welches System oder welche Architektur Sie bauen, und die anderen Dateien „normalerweise“ beim Erstellen aus dem Tarball nicht geändert werden. Das heißt, es sei denn, Sie haben einige Patches, die Sie anwenden müssen. Dann müssen Sie möglicherweise sowieso etwas neu generieren.
Mein Ansatz bei AT besteht darin, verschiedene Dinge auszuprobieren, bis es funktioniert oder ich es aufgebe. Aus verschiedenen Befehlen kommen verschiedene Dateien, und einige Befehle starten wie von Zauberhand andere Befehle. Auf der Wikipedia-Seite gibt es ein Flussdiagramm. Ich finde es nicht hilfreich, aber vielleicht vielleicht für Sie.
Ich schlage vor, sich davon fernzuhalten. Wenn Sie denken, dass Sie es für Ihr eigenes Projekt verwenden müssen, verwenden Siecmakeoderschottenoder was auch immer sonst zu diesem Zeitpunkt gut funktioniert und einfach ist.
Antwort2
Ich hatte ein ähnliches Problem auf meinem Linux-System, das ich durch Ausführen von „autoheader“ und „autoconf“ (aus dem Unterverzeichnis „trunk“ des entpackten Tarballs) gelöst habe.VorAusführen von „./configure“. Die nachfolgenden Vorgänge „make“ und „make install“ liefen reibungslos.
Anscheinend weiß Autoconf, wie man „configure“ aus configure.at (das sich im Tarball befand) erstellt, Sie müssen jedoch zuerst Autoheader ausführen, um die .in-Dateien zu erstellen, die von „configure“ zum Generieren der Header-Dateien verwendet werden, die dann verwendet werden, wenn Sie tatsächlich ./configure ausführen.
Antwort3
Warum machen Sie es nicht $ sudo apt-get install exuberant-ctags
oder was auch immer zu Ihrem Linux-Geschmack passt?