2009-02-01 9 views
5

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

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

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

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

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

ответ

8

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

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

1

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

The GNU Build System