Исходя из мира 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.