Лучший способ добавить сгенерированные файлы в дистрибутив?
-
18-09-2019 - |
Вопрос
У меня есть довольно сложный проект (C ++), использующий autoconf / automake, который включает в себя некоторые "сгенерированные" файлы (foo.yy -> foo.cc).Фактические сборки выполняются с использованием "управляющего скрипта" (Gentoo .ebuild для тех, кто знаком с концепцией) на различных платформах.
Теперь одна из целевых платформ должным образом не поддерживает foo.yy -> foo.cc шаг и должна использовать foo.cc файл, созданный в Linux box.
Теперь у меня есть два способа сделать это:
1) Зарегистрируйтесь foo.cc в репозитории проекта и каким-либо образом исправьте configure.in (или что угодно), чтобы включить проверку метки времени в foo.yy / foo.cc , генерируя понятное сообщение об ошибке, если выполняется на рассматриваемом целевом объекте с устаревшим foo.cc;
2) Выполните проверку foo.cc в хранилище управляющих скриптов, установите временные метки для управления скриптами и выдайте сообщение об ошибке.
Я мог бы сделать 2) без проблем, но я не думаю, что это подходящее место для размещения foo.cc.
С другой стороны, я мало что знаю об autoconf / automake и не знал бы, как реализовать проверку метки времени / сообщение об ошибке в configure.in (или где бы то ни было).
Каковы ваши предложения, и знает ли кто-нибудь из присутствующих, как приступить к решению 1)?
Редактировать: Решается с помощью решения 3), настраивая проблемный целевой блок до тех пор, пока он не сможет выполнить foo.yy -> foo.cc сам шаг. Мой проблема решена.
Но я оставлю вопрос открытым - как выполнять проверки временных меток / понятных сообщений об ошибках с помощью autoconf / automake?
Решение
Начиная с 8.8 в руководстве Automake:
Промежуточные файлы, созданные ‘yacc’ (или ‘lex’), будут включены в любой выпускаемый дистрибутив.Таким образом, пользователю не нужно иметь ‘yacc’ или ‘lex’.
Это звучит так, как будто проблема, которую вы описываете, не должна существовать.