ぽよメモ

レガシーシステム考古学専攻

GNU Make勉強会を開催した

なぜ今Make?

Makefileを書く機会がほとんどない割に、使う機会は多いなと昔から思っていました。
大学の講義でもC言語で書いたソースコードコンパイルEclipseに任せっきりで、TAとしてトラブルシュートする以外ではMakeはおろかgccを叩くこともほとんどありませんでした。

最近個人的に便利なタスクランナーとしてMakeを使うようになり、もっと効率の良い書き方はないのか?なぜこれは動かないのか?と悩む機会が増えるようになりました。同じ時期にあちこちでMakeの挙動に悩んでいるっぽい声を聞いたため、これは勉強会を開催するしか無いと思い提案したところ、おもったよりも反響があったため開催に至りました。

古くからあるソフトウェアであり、加えてC/C++用のビルドツールとしての役割から、複数のツール/言語にまたがるジェネリックなタスクランナーに切り替わってきたことで、Google検索で正しい情報を得ることが難しくなってきているように感じていることも、開催のモチベーションの一つでした。

資料

あんまり体系的に学ぼうとはしていません。僕が使う機能を重点的におさえて、まぁ最低限のMakefileが書けるくらいを目指して作っています。

スライド中にもありますが演習問題のリポジトリは以下です。

github.com

answersブランチに回答をアップロードしてあります(ex08までしかまだありません申し訳ない)。本当はex11まで作る予定だったのですが 間に合わなかった キリが悪かったので10個としてあります。

学んだこと

なんとなくで書いてなんとなくで読んできたことに説明ができるようになったので良かったです。一方でまだまだ深淵は深く、自分では説明できないことも多数あり、今後も精進が必要だなと感じています。

余談ですが、VSCodeのRemote Containersを使えばWinでもMacでもLinuxでもなんとかなるだろうと思って環境を用意していました。結果的に最初の環境構築でそこそこ時間を取られ、世の中ままならないものですね*1。一応もともと薄い環境を用意していたので、各々には多少の追加セットアップをしてもらうことで凌ぎました。

今回はその程度の対処でどうにかなりましたが、もう少し規模の大きな勉強会なら

  • 事前にセットアップを試してもらう
  • 自分でもいくつかの環境で試す

など、事前準備にはもう少し力を入れないといけないなと痛感しました。

まとめ

  • Makeに詳しい人ツッコミとPull Requestください
  • 本資料およびリポジトリはMITライセンスに則ってご自由にお使い下さい。
    • Twitterでの雑なリプライでも、このブログの紹介でも構わないので、一言頂けると今後のモチベーションになります。
  • そのうちex09とex10の解答もアップロードします

*1:WinではWSL2でなぜか急にDockerが動かず、Manjaro LinuxではRemote Containersが動かないという事態に見舞われました