Как перенастроить большую программу для GNU Autotools

У меня есть довольно большая программа, написанная на C. Она состоит из нескольких файлов и немного переработана, чтобы попытаться компенсировать проблемы с платформой. В частности, у меня есть файлы заголовков для разных операционных систем, архитектур и компиляторов, которые определяют макросы, которые он использует для обработки вещей. Например, флаг -v выводит информацию о версии, включая имя компилятора, который его построил, а также операционную систему и архитектуру, на которых он был построен. В качестве примера того, почему это важно, программа может создать файл кода C и, если хотите, скомпилировать его — задача, для которой она просто вызывает системный вызов любого компилятора, который был собран.

Он также поддерживает библиотеку GNU Readline (или библиотеку BSD Editline — то же самое), если она найдена в вашей системе, а также эквивалент без всех приятных функций Readline, который является чистым ANSI, если у вас его нет.

Суть в том, что я не могу убрать какие-либо из битов, зависящих от платформы, поскольку некоторые функции довольно сильно зависят от того, какая у вас ОС/архитектура/компилятор. Я также хочу предоставить хороший функционал тем, у кого он есть. И я хочу, чтобы люди загружали и устанавливали его со стандартным интерфейсом ./configure, make и make install.

В настоящее время я использую извиняющий самодельный сценарий оболочки для configure, который создает Makefile с нуля и определяет, какие заголовочные файлы включать в зависимости от вашей ОС/архитектуры/компилятора. Мне нужен более эффективный подход, и я хотел бы использовать более стандартную систему сборки с использованием GNU Autotools. Таким образом, я знаю, что то, что я делаю, будет работать на чужом компьютере, и мне не нужно тестировать это на их компьютерах.

Мой вопрос для тех из вас, кто прошел через все это (спасибо!), заключается в следующем: 1) Как мне переключиться с системы сборки homebrew на GNU Autotools? 2) Какие есть хорошие учебные пособия для начала работы с GNU Autotools? 3) Как я могу сделать этот процесс относительно безболезненным?


person Chris Lutz    schedule 01.02.2009    source источник


Ответы (2)


Во-первых, вы можете запустить autoscan в корневом каталоге проекта. Он просканирует дерево проекта и сгенерирует файл configure.scan, пытаясь обнаружить непереносимые функции. Затем вы переименовываете его в configure.ac, соответствующим образом редактируете и записываете файлы Makefile.am.

Я предлагаю вам посмотреть этот процесс (особенно автоматическое сканирование) в руководстве по автоинструментам GNU для получения подробной информации. Это уменьшит ваши усилия, но, по крайней мере, вам не придется начинать с нуля с создания этих файлов.

person Eduard - Gabriel Munteanu    schedule 01.02.2009

Эта ссылка - это то, что я искал в Google после прочтения этого поста. Он ответил на мои вопросы о том, как создать файл ./configure.

Система сборки GNU

person helloandre    schedule 03.03.2009