软件的编译和构建
正常的代码编译就是使用该语言对应的编译器把一份代码编译为二进制的机器指令。
而打包就是来调度这个编译器对y一个或者多个文件按指定的顺序进行编译,保证依赖关系提前被编译,并且最后打包为一个可执行文件
c或者c++的编译打包过程
c或者c++的编译使用的gcc或者g++,MSYS,mingw等编译器对单独文件进行编译
gnu make就是对多个文件进行打包,通过编写makefile来调度编译器编译代码的顺序以及编译过程中对依赖包的寻找。
cmake就是对gun make的升级,升级的是它跨平台的构建能力,make工具是无法跨平台兼容的,每个平台有自己的构建和编译工具,而CMake做的就是把这些工具都封装了提供统一接口
打包过程的一个关键是依赖管理
java的编译打包过程
java编译就是javac命令把代码编译为class文件
java的构建往往就使用了maven,gradle等构建工具,这类工具可以把代码打包为war,jar包,直接在jvm环境里运行。
java等高级开发语言的包管理工具都自带了依赖管理功能,因此无需单独使用其他包管理工具