Makefileの書き方についてです。
個人での研究や開発では、jupyter notebookばかりを触っていましたが、OSS開発をする機会で久しぶりにMakefileと出会いました。
c言語の授業以来です。あのときは何をやっているのか意味不明でした。
とりあえず、makeとコマンドを打つと良い感じになるということ、
訳分からなくなったときは、make cleanと打てば環境がきれいになるなぁとしか認識をしていませんでした。
先輩からお気持ちを教えていただいたので、とりあえず使えるよ!となるくらいまでまとめてみます。(まだまだ知らないことの方が多いのです)
Makefileとは?
すごく簡単にいうと、複雑な環境構築を一度コマンドを入力するだけで全部終わらせてることができるようにしたファイルのことです。
どうやって書くの?
名前: 変数1 変数2
ダウンロードとかそういう処理
もし変数使いたければ名前の横に定義
かなり雑ですが、雰囲気は全部このノリです。
以下では、
make my_setup
というコマンドを推すだけで、ファイルをダウンロードして、展開して、zipファイルを削除するという処理を全部やってくれます
FILE_NAME=downloaded_file
my_setup:
wget "http://ダウンロードしたいファイルのあるリンク.zip" -O ${FILE_NAME}
unzip ${FILE_NAME}
rm ${FILE_NAME}
よくあるのは、こんな感じな気がします。
PYTHON:= python3.6
.PHONY: all clean # .PHONYはタスクターゲットを宣言するためのもの
# この場合はallコマンドと、cleanコマンドをmakeで実行できるようにしたいので定義
# でも、別になくても動く(例:上のプログラムもないけど動く)
all: virtualenv
virtualenv:
test -d venv || virtualenv -p $(PYTHON) venv
. venv/bin/activate; cd ../; pip install -e .
touch venv/bin/activate
clean:
rm -fr venv
find -iname "*.pyc" -delete
これは、makeを実行すればrequirements.txtのライブラリがインストールされて、
make cleanをすると、それに関連するファイルが全部削除されるコードです。
最後に
まだまだ、使いこなせない機能もありますが、python使いでもMakefileが使えるようになっていると、たまにハッピーになれるということが分かったので、共有をします!
自分の理解が進んだらさらに記事を更新していこうと思います!
タイピングもままならない完全にプログラミング初心者から
たった二ヶ月で
応用も簡単にできる…!!
という状態になるまで、一気に成長させてくれたオススメのプログラミングスクールをご紹介します!


