Книга: Искусство программирования для Unix
19.2.3.2. Используйте автоинструменты GNU
19.2.3.2. Используйте автоинструменты GNU
Определение конфигурационных параметров должно быть выполнено во время компиляции. Значительное преимущество дистрибутивов с открытым исходным кодом заключается в том, что они позволяют адаптировать пакет к обнаруженной среде на этапе компиляции. Это особенно важно, поскольку позволяет пакету работать на таких платформах, которые были недоступны разработчикам пакета, а также позволяет сообществу пользователей данной программы создавать собственные версии. Только крупнейшие коллективы разработчиков могут позволить себе купить все аппаратное обеспечение и нанять достаточное количество работников для поддержки даже ограниченного числа платформ.
Следовательно: для того чтобы решить проблемы переносимости, определения системной конфигурации и адаптации make-файлов, необходимо использовать автоматические инструменты проекта GNU. Сегодня пользователи, устанавливающие программы из исходных кодов, ожидают возможности ввести команды configure; make; make install
и получить чистую сборку, и это действительно так. Полезные учебные материалы по работе с данными инструментами приведены на странице <http://seul.org/docs/autotut>.
Зрелыми утилитами являются autoconf и autoheader. Программа automake, как отмечалось ранее, еще до середины 2003 года была нестабильной и содержала много ошибок. Возможно, понадобится поддерживать собственный файл Makefile.in
. К счастью, automake является наименее важной программой в наборе автоинструментов.
Независимо от подхода к конфигурации, не следует задавать пользователю вопросы по конфигурации системы на этапе компиляции. Пользователь, устанавливающий пакет, не знает ответов на эти вопросы, и такой подход обречен с самого начала. Программа должна быть способна определить любые необходимые ей данные во время компиляции или установки.
Однако утилиту autoconf нельзя рассматривать как одобрение кнопочных конструкций. Если вообще возможно, при программировании необходимо придерживаться стандартов, подобных POSIX, и воздерживаться от опроса системы для получения конфигурационной информации. Рекомендуется сохранять минимальное число ifdefs-директив, а еще лучше — не иметь их вообще.
- 19.2.3.1. Не полагайтесь на частный код
- 19.2.3.2. Используйте автоинструменты GNU
- 19.2.3.3. Тестируйте код перед выпуском версии
- 19.2.3.4. Выполняйте контроль ошибок в коде перед выпуском версии
- 19.2.3.5. Проверяйте орфографию в документации и README-файлах перед выпуском версии
- 19.2.3.6. Рекомендованные практические приемы переносимости кода C/C++
- Appendix H. GNU Free Documentation License
- Appendix I. GNU General Public License
- Используйте аутсорсинг
- 1.3. Автоматизация процесса с помощью GNU-утилиты make
- Совет 5. Используйте интервальные функции вместо одноэлементных
- Используйте «инстинкт завершения»
- The GNU Image Manipulation Program
- 8.5. Используйте WPA или WPA2
- 8.5. Обход дерева файлов: GNU du
- GNU Emacs and the Free Software Foundation
- Проект GNU и Фонд свободного ПО
- 2.1.2. Соглашения по работе с командной строкой в GNU