Исходя из мира C и C ++, большинство систем сборки имеют install
цель, в частности Makefiles (где это рекомендуется GNU, например) или CMake . Эта цель копирует файлы времени выполнения (исполняемые файлы, библиотеки, ...) в операционной системе (например, в C:\Program Files\
Windows).
Это выглядит очень странно, так как для меня сборка программ не является обязанностью системы сборки (на самом деле это ответственность операционной системы / менеджера пакетов). Это также означает, что система сборки или скрипт сборки должны знать организацию установленных программ с переменными среды, переменными реестра, символическими ссылками, разрешениями и т. Д.
В лучшем случае системы сборки должны иметь release
цель, которая будет выводить устанавливаемую программу (например, .deb
или .msi
), а затем просить операционную систему установить эту программу. Это также позволит пользователю удалить без необходимости печатать make uninstall
.
Итак, мой вопрос: почему система сборки обычно рекомендует иметь install
цель?
make install
обычно устанавливается в /usr/local
(или даже /opt
) каталогах, которые не обрабатываются «базовой системой управления ОС / пакетами». Не знаю, есть ли в Windows какое-то подобное соглашение.
make install
нет никакого смысла, когда мы говорим о кросс-компиляции
DESTDIR
.