Обновляет ли «make install» по соглашению цели, которые устанавливает? - PullRequest
3 голосов
/ 26 марта 2010

Обычно для создания продукта ./configure d вы вызываете следующие команды:

make
make install

Хорошо, продукт сейчас в системе. Затем вы изменяете некоторые файлы исходного кода и вызываете только make install. Вопрос в том, требует ли традиционная реализация цели install, чтобы исполняемые файлы были перекомпилированы, или только старые должны быть скопированы в соответствующий системный путь?

Ответы [ 3 ]

3 голосов
/ 26 марта 2010

Конечно, зависит от того, чей обычный вам нравится.Вот соглашение GNU :

install
Скомпилируйте программу и скопируйте исполняемые файлы, библиотеки и т. Д. В имена файлов, где они должныпроживать для фактического использования.

И это похоже на разумное соглашение: наличие make install установки устаревших исполняемых файлов в большинстве случаев приведет только к путанице.

3 голосов
/ 26 марта 2010

make решает эту проблему специально, если ваши зависимости установлены правильно.

Если ̀ make, построить двоичный файл с именем helloworld. Вы, вероятно, напишите свою цель install, чтобы она скопировала этот двоичный файл helloworld из вашего исходного каталога в /usr/bin.

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

2 голосов
/ 26 марта 2010

Да, хорошо написанный make-файл будет install зависеть от устанавливаемого исполняемого файла (или от all), поэтому он будет проверять актуальность исполняемого файла перед его установкой.

Есть несколько причин раскола.Обычно целью по умолчанию является all, которая не устанавливает файлы, а только создает их.Для разработчиков это означает, что они могут легко создавать источники в своей рабочей среде, не затрагивая остальную часть своей системы.Для конечных пользователей это означает, что они могут запускать сборку как обычный пользователь, а затем запускать только make install от имени root.

Это означает, что технически этап make в make; make install является избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...