Warum konnte ich keine ctags für vim erstellen?

1199
hugemeow

Ich habe die neueste, nicht veröffentlichte Version des ctags- Quellcodes aus dem svn-Repository erhalten

svn co https://ctags.svn.sourceforge.net/svnroot/ctags 

Ich lief ./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.inund ist nun ./configureerfolgreich.

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 

Laufen makenoch 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?
1

3 Antworten auf die Frage

3
Eroen

Dies schlägt fehl, da (im Gegensatz zu vorbereiteten Quell-Tarballs) das svn-Repositroy keine von Autotools verwendeten Zwischendateien enthält .

Ich bin mit AT oder ctags nicht allzu vertraut, aber laufe automakeund autoconfbevor du wieder rennst ./configure. Die Prozedur befindet sich wahrscheinlich in einer INSTALLDatei oder einem Dokumentationsordner. Vielleicht möchten Sie danach suchen.

Nachtrag:

Laut einem (inoffiziellen) Gentoo-Ebuild sollte Laufen autoreconfgenug sein.

Nachtrag 2:

Wie gesagt, ich bin kein AT-Guru, mir wird gesagt, dass es weltweit nur eine zweistellige Anzahl gibt.

config.hist nicht im svn-Repository enthalten, da es nicht von einem Menschen geschrieben wird und nur von den anderen Dateien im Repository abhängt. Die Entwickler müssen es ohnehin oft neu erstellen, wenn sie Änderungen vornehmen. Es ist also nur eine zusätzliche Datei zum Herunterladen und sofortiges Löschen beim Auschecken der Änderungen.

Auf der anderen Seite, es wird in dem Tarball enthalten, um das Gebäude der Software weniger schmerzhaft zu machen. Ich glaube, es verhindert auch einige Probleme, wenn andere AT-Versionen als die Entwickler verwendet werden. In diesem Fall gibt es keinen wirklichen Nachteil, da es nicht davon abhängt, für welches System oder welche Architektur Sie erstellt werden, und die anderen Dateien "werden normalerweise nicht geändert", wenn Sie aus dem Tarball erstellen. Das heißt, es sei denn, Sie haben einige Patches, die Sie anwenden müssen. Dann müssen Sie möglicherweise trotzdem etwas regenerieren.

Mein Ansatz für AT ist es, verschiedene Dinge auszuprobieren, bis es funktioniert oder ich es aufgreife. Verschiedene Dateien kommen aus verschiedenen Befehlen, und einige Befehle starten andere Befehle auf magische Weise. In der Wikipedia-Seite gibt es ein Flussdiagramm. Ich finde es nicht hilfreich, aber vielleicht könntest du.

Ich schlage vor, davon Abstand zu nehmen. Wenn Sie glauben, dass Sie es für Ihr eigenes Projekt verwenden müssen, verwenden Sie cmake oder scons oder was auch immer sonst gut funktioniert und zu diesem Zeitpunkt einfach ist.

warum ist config.h.in nicht in svn repo enthalten? Ich kann diesen Fund in seinem Archiv von der offiziellen Website finden. hugemeow vor 11 Jahren 0
Was ist der Unterschied zwischen autoconf und autoreconf? hugemeow vor 11 Jahren 0
1
Peter

Ich hatte ein ähnliches Problem auf meinem Linux-System, das ich durch Ausführen von "autoheader" und "autoconf" (aus dem "trunk" -Unterverzeichnis des entpackten Archivs) gelöst habe, bevor "./configure" ausgeführt wurde. Die nachfolgenden Vorgänge "make" und "make install" liefen problemlos.

Es scheint, als ob autoconf die Konfiguration von configure.at vornehmen kann (die sich im Tarball befand), aber Sie müssen zuerst den Autoheader ausführen, um die .in-Dateien zu erstellen, die von configure zum Generieren der Header-Dateien verwendet werden, die dann verwendet werden Sie laufen tatsächlich ./configure.

0
romainl

Warum machst du das nicht $ sudo apt-get install exuberant-ctagsoder was auch immer zu deinem Linux-Geschmack passt?

Denn die stabile Version von ctags enthält Fehler, die nur in der aktuellen Version behoben werden (und wann die aktuelle stabile Version von ctags veröffentlicht wurde). AnonymousLurker vor 11 Jahren 1
In der Tat ist es schon eine loooooooooong Zeit. @Hugemeow versucht aber offenbar 5.7 zu bauen, was nicht besonders innovativ ist. romainl vor 11 Jahren 1
Ich bin damit einverstanden, Sie versuchen zu zeigen, dass die Verwendung des Repositorys zum Installieren von Dingen die beste Option ist. Ich wusste jedoch, dass dies in diesem speziellen Fall nicht die beste Option ist - für ctags daher mein Kommentar. Ich bin mir sicher, dass die neuesten stabilen Vanilla-Ctags Bugs enthalten. Vielleicht werden in Distro-Repos einige Patches angewendet, wenn Pakete erstellt werden. AnonymousLurker vor 11 Jahren 0