编译与构建

举报
gentle_zhou 发表于 2022/11/10 22:20:59 2022/11/10
【摘要】 编译只是构建的一小部分

编译

编译(compile),将源代码转换成二进制代码;用以实现这个转换过程的工具被称为编译器(compiler)。编译器在同一时刻只能转换一个编译单元(即单个源代码文件),一般相应的编程语言都会提供。

构建

构建(build),就是使用一个自动化工具将源代码文件生成在生产环境可以使用的目标文件(比如一个可执行应用程序),这其中会涉及到编译源码,编译测试源码,执行测试,打包(成jar, war包等),健康检查,生成报告等;用以实现这个生成过程的工具就是构建系统(build system)。

从上面的描述,我们也可以看出,编译只是构建的一小部分
image.png

常见的构建工具

Apache Maven;专门为Java项目打造的管理和构建工具,主要用于:提供一套标准化的项目结构,一套标准化的构件流程,一套依赖管理机制。
image.png

Apache Ant;一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。默认情况下,它的buildfile(XML文件)名为build.xml。
image.png

Gradle;针对Android,一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
image.png

MsBuild:一个自由且开源的构建工具集,适用于托管代码以及原生C++代码,是.NET框架的一部分。Microsoft Visual Studio依赖于 MSBuild,MSBuild也依赖于Visual Studio
image.png

Npm:node package manager,是随同Node.js一起安装的第三方包管理器;通过npm,我们可以安装、共享、分发代码,管理项目的依赖关系。
推荐大家也可以看看我先前写的几篇文章:《运行npm install命令的时候会发生什么?》;《三种出包命令npm, yarn, webpack的对比》;《运行npm run命令的时候会发生什么?》
image.png

Cmake:跨平台的编译工具;根据不同的平台能输出各种各样相对应的makefile或者project文件,CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile)。Cmake即cross platform make的缩写。
image.png

华为云编译构建服务

华为云DevCloud编译构建服务(CloudBuild)基于云端大规模并发加速,为客户提供高速、低成本、配置简单的混合语言构建能力,实现编译构建云端化,支撑企业实现持续交付,缩短交付周期,提升构建效率;支持如下这些功能:
image.png

参考资料

  1. https://stackoverflow.com/questions/2650168/building-vs-compiling-java
  2. https://maven.apache.org/
  3. https://cmake.org/
  4. https://ant.apache.org/
  5. https://www.huaweicloud.com/product/cloudbuild.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。