為什麼我無法為 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 專家,我聽說世界上這樣的人只有兩位數。

config.h不包含在 svn 儲存庫中,因為它不是由人編寫的,它僅依賴儲存庫中的其他檔案。無論如何,開發人員在更改內容時都必須經常重新製作它,因此這只是一個需要下載的額外文件,然後在檢查更改時立即刪除。

另一方面,它包含在 tarball 中是為了減輕軟體建構的痛苦。我相信,當人們使用與開發人員不同的 AT 版本時,它也可以防止一些問題出現。在這種情況下,它沒有真正的背面,因為它不依賴您建立的系統或體系結構,並且在從 tarball 建置時「通常不會」修改其他檔案。也就是說,除非您有一些需要應用的補丁。那麼無論如何你可能都需要重新生成一些東西。

我的 AT 方法是嘗試不同的事情,直到它起作用為止,否則我就放棄它。不同的檔案來自不同的命令,並且某些命令神奇地啟動其他命令。在維基百科頁面中,有一個流程圖。我不認為它有幫助,但也許你可能會。

我建議遠離它。如果您認為需要將它用於您自己的項目,請使用cmake或者斯康斯或其他任何效果很好並且當時很簡單的東西。

答案2

我在 Linux 系統上遇到了類似的問題,我透過執行「autoheader」和「autoconf」(來自解壓縮的 tarball 的「trunk」子目錄)解決了這個問題執行“./configure”。隨後的「make」和「make install」操作運作順利。

似乎 autoconf 知道如何從 configure.at (位於 tarball 中)進行配置,但是您必須先運行 autoheader 才能創建 .in 文件,configure 使用這些文件來生成頭文件,然後在以下情況下使用這些文件你實際上運行了./configure。

答案3

為什麼不做$ sudo apt-get install exuberant-ctags或做任何適合你的 Linux 風格的事情呢?

相關內容