ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

2020年のナウいビルドツール

この記事は

  • Linux 環境で使えるナウいビルドツールをまとめた記事です
  • 比較のためにナウくないのも列挙してます

ビルドツール

GNU make

  • 最もベーシックで人間にも優しい
  • プロジェクト規模がデカくなるととにかく重たい
  • ちょっと変なことをしようと思うととたんにうまくいかなくなって悲しい

ninja

  • make の置き換えと言うポジション
  • 何でもかんでも明示的に書くと言う考え方
  • メタビルドツールから触ることを前提にしていて人間に対する当たりが強い

bazel

  • GNU make の代替というポジション
  • 言語ごとに最適化されたプリセットを選んで必要な項目だけを埋める感じのビルドツール
  • 中で何が起きているかわからないのでトラブった時にしんどい?

メタビルドツール

autotools

  • configure, Makefile を生成するヤツ
  • C/C++ のビルドする時のおまじない ./configure --prefix=/path/to/install/dir, make, make install はコイツが由来
  • 設定ファイルを書くのが超辛いらしい

cmake

  • autotools の代替と言うポジション
  • ぱっと見で理解出来るようなものではない
  • 覚えるのめっちゃ大変そう

Meson

  • cmake の代替というポジション
  • Meson で ninja の設定ファイルを書き出して ninja でビルドする感じ
  • Meson 呼んで build ディレクトリに入って ninja 呼ぶっていう3ステップはちょっとイヤ

java

ant

  • javaGNU make といった趣
  • java のサポートが手厚いがそれ以外の言語に使えないこともないっぽい
  • XML でルールを記述すると言う時点でもう無理

Maven

  • ant の代替
  • ビルドツールっていうかプロジェクト管理ツール
  • やっぱり XML での記述

Gradle

  • Maven の後継
  • OSS のビルド自動化のためのツールらしいがやっぱり java のサポートが手厚い印象
  • 本体 + プラグイン + groovy による記述の3段構え

感想

  • こうして列挙してみると進化の歴史を俯瞰した感じありますね
  • 超絶ナウい GNU make を探してたので bazel がすんごい魅力的に感じる

参考