bazel

转载自
什么是Bazel—教程、实例和优势
作者:方石剑
链接:https://juejin.cn/post/7120840097863303199
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Bazel是一个开源的构建工具,由谷歌开发,用于自动化大规模软件的构建过程。Pinterest、Adobe、SpaceX、Nvidia和LinkedIn等公司都使用它。在本教程中,你将了解什么是Bazel,它如何工作,以及它的重要好处。你还会学到如何为你的monorepo项目生成Bazel构建。

你为什么要使用Bazel?

Bazel的工作原理与MakeMavenGradle等其他构建工具类似。然而,与其他工具不同的是,Bazel是为具有多语言依赖性的项目量身定做的。

例如,你可以有一个Rust或Go的服务器,一个flutter的移动客户端,和一个Angular的网络客户端。在这种情况下,如果你要手动编写自己的构建文件,以迎合每种语言的生态系统,这可能是一项艰巨的任务。幸运的是,Bazel为你完成了所有繁重的工作:

bazel tutorial, bazel build

Bazel最吸引人的特点之一是你可以轻松地将它与你的项目的CI/CD挂钩。这可以帮助你提高团队的生产力,因为你可以产生更可靠的构建,定期和严格地测试你的软件。因此,你也可以很容易地出货和发布更强大的构建。

然而,Bazel不仅仅是处理多语言的依赖关系。让我们来探讨一些使它如此强大的好处。

Bazel有哪些优点?

以下是使Bazel成为出色的构建工具的关键优势。

阅读更多

cmake

CMake

前言

  • CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。
  • CMake可以说已经成为大部分C++开源项目标配

1 Cross-platform development

Let’s assume you have some cross-platform project with C++ code shared along different platforms/IDEs. Say you use Visual Studio on Windows, Xcode on OSX and Makefile for Linux:

What you will do if you want to add new bar.cpp source file? You have to add it to every tool you use:

To keep the environment consistent you have to do the similar update several times. And the most important thing is that you have to do it manually (arrow marked with a red color on the diagram in this case). Of course such approach is error prone and not flexible.

CMake solve this design flaw by adding extra step to development process. You can describe your project in CMakeLists.txt file and use CMake to generate tools you currently interested in using cross-platform CMake code:

Same action - adding new bar.cpp file, will be done in one step now:

Note that the bottom part of the diagram was not changed. I.e. you still can keep using your favorite tools like Visual Studio/msbuild, Xcode/xcodebuild and Makefile/make!

阅读更多