实际的软件代码块通常被组织成多个文件,并且有许多依赖项,同时需要专用的工具来管理。软件包管理器是一种命令行工具,可以帮助用户管理具有多个依赖项的大型项目。如果你用过Node.js
,必然会非常熟悉npm/yarn
,或者是Go
语言,那么应该熟悉Go
工具。它们完成了项目分析、下载正确版本的依赖项、检查版本冲突、编译和链接源文件等所有繁琐的工作。
诸如 C/C++
这样的底层语言的问题在于,默认情况下它们没有附带专用的软件包管理器。C/C++
社区长期以来使用 GNU Make
工具,它是一个与程序语言无关的构建系统,并且具有奇特的语法,这使得许多开发人员望而却步。GNU Make
工具的问题在于它不知道C/C++
源代码中包含哪些头文件,因此必须手动添加这些信息。它没有内置支持下载外部依赖项的功能,也不了解正在运行的平台。幸运的是,Rust
附带专用的软件包管理器,它在所管理的项目上有更多的上下文信息。