Почему я не смог собрать ctags для vim?

1137
hugemeow

Я получил последнюю, неизданную версию исходного кода 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 
  • Почему это не работает?
  • Как мне собрать ctags из репозитория svn?
1

3 ответа на вопрос

3
Eroen

Сбой из-за того, что (в отличие от подготовленных исходных архивов) svn repositroy не содержит промежуточных файлов, используемых автоинструментами .

Я не слишком знаком с AT или ctags, но попробуйте запустить automakeи autoconfперед запуском ./configureснова. Процедура, вероятно, находится где-то в INSTALLфайле или папке с документацией, вы можете поискать это.

Приложение:

Согласно (неофициальному) Gentoo ebuild, запуска autoreconfдолжно быть достаточно.

Приложение 2:

Как я уже сказал, я не гуру АТ, мне сказали, что в мире есть только двузначное число.

config.hне включен в репозиторий svn, потому что он не написан человеком и зависит только от других файлов в репозитории. В любом случае разработчикам приходится часто делать это заново, так как это будет просто дополнительный файл для загрузки, а затем сразу же удаляемый при проверке изменений.

С другой стороны, она будет включена в тарболлах для того, чтобы здание программного обеспечения менее болезненным. Я верю, что это также предотвращает некоторые проблемы, когда у людей разные версии AT, чем у разработчиков. В этом случае нет реальной обратной стороны, поскольку это не зависит от того, для какой системы или архитектуры вы строите, а другие файлы «обычно» не модифицируются при сборке из tarball. То есть, если у вас нет патчей, которые вам нужно применить. Тогда вам может понадобиться что-то восстановить в любом случае.

Мой подход к АТ - пробовать разные вещи, пока они не сработают или я не откажусь. Разные файлы появляются из разных команд, и некоторые команды магически запускают другие команды. На странице Википедии есть блок-схема. Я не нахожу это полезным, но, возможно, вы могли бы.

Я предлагаю держаться подальше от этого. Если вы считаете, что вам нужно использовать его для своего собственного проекта, используйте cmake или scons или что-то еще, что работает хорошо и в то время просто.

почему config.h.in не включен в репозиторий SVN? Я могу найти эту находку в ее архиве с официального сайта. hugemeow 11 лет назад 0
В чем разница между autoconf и autoreconf? hugemeow 11 лет назад 0
1
Peter

У меня была похожая проблема в моей системе Linux, которую я решил, запустив «autoheader» и «autoconf» (из подкаталога «trunk» распакованного архива) перед запуском «./configure». Последующие операции «make» и «make install» выполнялись без проблем.

Кажется, что autoconf знает, как сделать configure из configure.at (который был в tarball), но сначала вам нужно запустить autoheader, чтобы создать .in-файлы, которые используются configure для генерации заголовочных файлов, которые затем используются при вы на самом деле запускаете ./configure.

0
romainl

Почему вы не делаете $ sudo apt-get install exuberant-ctagsили что-то вписывается в ваш вкус Linux?

Потому что в стабильной версии ctags есть ошибки, которые исправляются только в текущей версии (и посмотрите, когда была выпущена последняя стабильная версия ctags). AnonymousLurker 11 лет назад 1
Действительно, очень давно. Но @hugemeow, по-видимому, пытается собрать 5.7, что не особенно актуально. romainl 11 лет назад 1
Я согласен, вы пытаетесь указать, что использование репозитория для установки является лучшим вариантом, однако я случайно узнал, что это не лучший вариант в данном конкретном случае - для ctags, отсюда мой комментарий. Я уверен, что в последних стабильных ванильных ctags есть ошибки, возможно, в дистрибутивных репозиториях некоторые патчи применяются при сборке пакетов. AnonymousLurker 11 лет назад 0

Похожие вопросы