来自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
。