vim 用の ctags をビルドできなかったのはなぜですか?

vim 用の ctags をビルドできなかったのはなぜですか?

私は最新の未発表バージョンを手に入れましたcタグSVNリポジトリからソースコードを取得する

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

を実行しました./configureが、次のエラーで失敗しました。

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

次に、 という名前の空のファイルを作成しconfig.h.in./configure成功しました。

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

実行はmakeまだ失敗しました。

[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
  • なぜこれが機能しなかったのでしょうか?
  • svn リポジトリから ctags をビルドするにはどうすればよいですか?

答え1

(準備されたソースtarballとは対照的に)svnリポジトリには、オートツール

私は AT や ctags にあまり詳しくありませんが、もう一度実行する前にautomake実行してみてください。手順はおそらくファイルまたはドキュメント フォルダーのどこかにあるので、それを探すとよいでしょう。autoconf./configureINSTALL

補遺:

(非公式の)Gentoo ビルド、走るだけautoreconfで十分なはずです。

補遺2:

前にも言ったように、私は AT の専門家ではありませんが、世界には AT が 2 桁しかないと言われています。

config.hこれは人間によって書かれたものではなく、リポジトリ内の他のファイルにのみ依存するため、svn リポジトリには含まれません。開発者は変更を加えるたびに頻繁に再作成する必要があるため、変更をチェックアウトするときにダウンロードしてすぐに削除するだけの余分なファイルになります。

一方、ソフトウェアのビルドを楽にするために、tarball に含まれています。開発者と異なるバージョンの AT を使っている場合にも、問題が発生するのを防ぐことができると思います。この場合、ビルドするシステムやアーキテクチャに依存せず、tarball からビルドするときに他のファイルは「通常は」変更されないため、実際には問題はありません。つまり、適用する必要があるパッチがいくつかある場合を除きます。パッチがある場合は、とにかく何かを再生成する必要があるかもしれません。

AT に対する私のアプローチは、うまくいくか諦めるまで、さまざまなことを試してみることです。さまざまなファイルが異なるコマンドから出力され、コマンドの中には他のコマンドを魔法のように開始するものもあります。Wikipedia のページにはフローチャートがあります。私には役に立たないと思いますが、皆さんには役立つかもしれません。

避けた方が良いでしょう。自分のプロジェクトで必要だと思うなら、メイクまたはスコンまたはその時点でうまく機能し、シンプルなものなら何でもかまいません。

答え2

私の Linux システムでも同様の問題がありましたが、(解凍した tarball の「trunk」サブディレクトリから)「autoheader」と「autoconf」を実行することで解決しました。前に「./configure」を実行しました。その後の「make」および「make install」操作は問題なく実行されました。

autoconf は、configure.at (tarball 内にあった) から configure を作成する方法を知っているようですが、実際に ./configure を実行するときに使用されるヘッダー ファイルを生成するために configure によって使用される .in ファイルを作成するには、まず autoheader を実行する必要があります。

答え3

$ sudo apt-get install exuberant-ctagsあなたの Linux スタイルに合ったものを試してみませんか?

関連情報