2009-07-22 3 views
0

У меня довольно сложный (C++) проект с использованием autoconf/automake, который включает в себя некоторые «сгенерированные» файлы (foo.yy -> foo.cc). Фактические сборки выполняются с использованием «скрипта управления» (Gentoo .ebuild для тех, кто знаком с концепцией), на разных платформах.Лучший способ добавления сгенерированных файлов в дистрибутив?

Теперь одна из целевых платформ должным образом не поддерживает шаг foo.yy -> foo.cc и должна использовать файл foo.cc, сгенерированный в ящике Linux.

Теперь у меня есть два пути идти об этом:

1) Проверить в foo.cc в репозиторий проекта и каким-то образом обновляемые configure.in (или любой другой), чтобы включить проверку временной метки на foo.yy/обув .cc, генерируя приемлемое сообщение об ошибке, если оно запущено на рассматриваемой цели с устаревшим foo.cc;

2) Проверьте foo.cc в репозитории скрипта управления и отметьте метки времени управления сценарием и сообщите об этом сообщение об ошибке.

Я мог бы сделать 2) никаких проблем, но я не думаю, что это подходящее место для размещения foo.cc.

С другой стороны, я мало знаю об autoconf/automake и не знаю, как реализовать сообщение об ошибке времени/сообщение об ошибке в файле configure.in (или whereever).

Каковы ваши предложения, и кто-нибудь здесь знает, как решить проблему 1)?

Редактировать: Решено использовать решение 3), настраивая проблемную целевую область, пока она не сможет выполнить сам foo.yy -> foo.cc. My проблема решена.

Но я оставлю вопрос открытым - как сделать отметки времени/понятные сообщения об ошибках с помощью autoconf/automake?

ответ

0

От 8.8 в руководстве Automake:

Промежуточные файлы, созданные ‘ ’ Yacc (или ‘ ’ Лекса) будут включены в любом дистрибутиве, который сделан. Таким образом, пользователь не должен должен иметь ‘ yacc ’ или ‘ lex ’.

Звучит так, как будто проблема, которую вы описываете, не должна существовать.

+0

Если вы делаете «make dist», а затем распределяете * это * на цели и создаете пакет из дистрибутива. Но это не делается в этом случае, двоичные файлы создаются непосредственно из того, что находится в CVS ... См. Отредактированный вопрос - для меня это больше не проблема. – DevSolar

+0

Зачем распространяться непосредственно с вашего VCS? (Надеюсь, что «CVS» - это опечатка - на самом деле вы все еще не используете CVS?) Вещи действительно проще, если вы только запускаете цепочку автозапуска в своем окне разработки и распространяете созданный tarball. В частности, вам не нужно иметь yacc или lex или autoconf или automake или libtool или m4 (и т. Д.), Установленные в вашем целевом поле. –

+0

«make dist» - это способ создания дистрибутива при использовании automake (или любого пакета, который следует за соглашениями GNU, если на то пошло). Если вы не собираетесь использовать то, что предлагает automake, automake не может сделать много, чтобы помочь вам. – Braden

Смежные вопросы