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

решение1

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

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

Приложение:

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

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

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

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

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

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

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

решение2

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

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

решение3

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

Связанный контент