Programming Languages - Build Tools

Updated: 2021-11-28

Build tools / package managers:

Tool Config / DSL C/C++ JVM Rust Go Swift JS
CMake CMakeLists.txt Yes
Gradle Groovy / Kotlin Yes Yes Yes
Maven xml Yes
Bazel Starlark (Python) Yes Yes Yes Yes
Cargo toml Yes
NPM json Yes

JVM inclues Java, Kotlin, Scala, etc.

Build Tools

Android: AOSP is migrating to Bazel; Android Studio uses Gradle by default, which is used to build Android apps.

Package Managers and Registries

Cloud Services

Compilers

  • swc: (https://swc.rs/) a typescript / javascript compiler, written in Rust.
  • Emscripten: an LLVM/Clang-based compiler that compiles C and C++ source code to WebAssembly

Clang vs GCC

2 Primary C/C++ compilers: Clang and GCC.

Clang GCC
License Apache 2.0 GPL / LGPL
C++ Standard Library libc++ libstdc++
C Standard Library glibc
Parent Project LLVM GNU
Website https://clang.llvm.org/ https://gcc.gnu.org/

Notes:

  • Clang was originated from Apple but now widely used (You will find Google, Facebook Microsoft, Intel, Qualcomm, Huawei in LLVM Found ation sponsor list https://foundation.llvm.org/docs/sponsors/)
  • Emerging languages are using the LLVM frameworks, such as Swift, Rust.
  • GCC was deprecated in Android in 2019 and removed in 2020
  • GCC is the official compiler for the GNU and Linux systems
  • Clang supports a wide variety of C standard library implementations.

Conclusion: use Clang/LLVM if you do not have to use GCC.

Install Clang

On Debian / Ubuntu:

$ sudo apt install clang libc++-dev libc++abi-dev

Verify:

$ clang --version
clang version xx.x.x
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin