为什么我无法为 vim 构建 ctags?

为什么我无法为 vim 构建 ctags?

我获得了最新未发布的版本标签使用 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运行./configure。该过程可能位于INSTALL文件或文档文件夹中的某个位置,您可能需要查找它。

附录:

据(非官方)Gentoo 的 ebuild,跑步autoreconf就足够了。

附录2:

正如我所说,我不是 AT 大师,我听说世界上只有两位数的 AT 大师。

config.h不包含在 svn 存储库中,因为它不是人工编写的,并且仅依赖于存储库中的其他文件。开发人员在更改内容时必须经常重新制作它,因此它只是一个需要下载的额外文件,然后在签出更改时立即删除。

另一方面,它包含在 tarball 中,以使软件的构建不那么痛苦。我相信当人们拥有与开发人员不同的 AT 版本时,它还可以防止一些问题。在这种情况下,它没有真正的负面影响,因为它不依赖于您为哪个系统或体系结构构建,并且从 tarball 构建时其他文件“通常”不会被修改。也就是说,除非您需要应用一些补丁。那么您可能无论如何都需要重新生成一些东西。

我对 AT 的方法是尝试不同的方法,直到成功或放弃。不同的文件来自不同的命令,有些命令会神奇地启动其他命令。在 Wikipedia 页面中,有一个流程图。我觉得它没什么用,但也许你会用得上。

我建议你远离它。如果你认为你需要在自己的项目中使用它,那就去使用构建或者斯康斯或者其他任何当时有效并且简单的事情。

答案2

我在我的 Linux 系统上遇到了类似的问题,我通过运行“autoheader”和“autoconf”(从解压后的 tarball 的“trunk”子目录中)解决了该问题运行“./configure”。后续的“make”和“make install”操作运行顺利。

看来 autoconf 知道如何从 configure.at(在 tarball 中)进行配置,但您必须先运行 autoheader 才能创建 .in 文件,configure 会使用这些 .in 文件来生成头文件,然后在您实际运行 ./configure 时使用这些头文件。

答案3

为什么你不这么做$ sudo apt-get install exuberant-ctags或者做任何适合你的 Linux 风格的事情?

相关内容