Для чего нужен ./configure serve (кроме проверки зависимостей) - PullRequest
2 голосов
/ 07 января 2010

Почему каждый пакет с исходным кодом, который использует make-файл, поставляется со скриптом ./configure, что он делает?Насколько я могу судить, он действительно генерирует make-файл?

Есть ли что-то, что нельзя сделать в make-файле?

Ответы [ 5 ]

2 голосов
/ 07 января 2010

configure обычно является результатом работы системы 'autoconf'. Он может генерировать заголовки, make-файлы, что угодно. «Обычно», так как некоторые из них сделаны вручную.

Причиной этого является возможность компиляции исходного кода в разнородных средах В Unix / Linux существует множество вариаций с немного различными системными заголовками и библиотеками. скрипты configure позволяют коду автоматически адаптироваться.

1 голос
/ 07 января 2010

Дело в том, что autoconf autohdr automake формирует интегрированную систему, которая делает кроссплатформенное построение на Unix относительно более надежным. Документы действительно плохие и есть много ужасных ошибок, но с другой стороны, есть много рабочих образцов

Когда я впервые наткнулся на это, я подумал: «Ха, я могу сделать это с хорошим чистым make-файлом» и приступил к переработке исходного кода таким образом. Большая ошибка. Научитесь писать и редактировать файлы configure.ac и makefile.am, в итоге вы будете счастливы

Чтобы ответить на ваш вопрос. Конфигурация хороша для

  • - это функция foo, доступная на этой платформе, и если да, то какая мне нужна библиотека и библиотека

  • , позволяя строителю выбрать, хотите ли он, чтобы функция wizzbang была включена в простой и удобный последовательный способ

1 голос
/ 07 января 2010

Я не думаю о make-файле как о скрипте, я думаю о нем как о входе в утилиту make.

Сценарий configure (как следует из его названия) настраивает make-файл, в том числе, как вы говорите, разрешение зависимостей.

Если только из-за идеи избежать самоизменяющегося кода , вещи в скрипте конфигурирования на самом деле не принадлежат make-файлу.

1 голос
/ 07 января 2010

Все можно сделать из make-файла, но некоторые системы сборки были реализованы иначе.

Лично я не использую configure файлы для своих проектов, но допускаю, что я в основном экспортирую проекты на основе Erlang & Python.

1 голос
/ 07 января 2010

Шаг настройки является своего рода мета-сборкой.Он генерирует make-файл, который будет работать на конкретном оборудовании / дистрибутиве, который вы используете.Например, он определяет имя компилятора C или C ++ и встраивает его в make-файл.

Этап настройки также часто принимает набор параметров, значения которых могут определять, с какими библиотеками необходимо связываться.Например, если вы компилируете Apache HTTP с включенным SSL, ему нужно связать с большим количеством общих библиотек, чем если бы вы этого не делали.Поскольку связывание обрабатывается make-файлом, вам необходим дополнительный шаг для создания собственного make-файла (вместо того, чтобы команда make требовала десятки или сотни параметров.

...