my notebook blog : Make
たくさんある SVG ファイルを一括で PNG に置き換える makefile を書いた件
make の wildcard 指定がわかりづらい。
GNU Make ワイルドカードを使ってカレントディレクトリの .htm を .txt に変換する
諸事情により HTML ファイルを wikiテキストに変換する必要がある。 そこでカレントディレクトリにある hoge.htm のHTMLタグをストリップした上で、 hoge.txt に保存したい。 そのとき、当然カレントディレクトリには複数の *.htm があるので、 そのファイル名から拡張子を取り除いた部分について維持したファイル名で… つまり、foo.htm には foo.txt , honya.htm は honya.txt といったファイル名変換ルールで処理したい場合の makfile の具体例をメモします。
ディレクトリが存在している場合だけ処理する方法, ifでフロー制御 ( GNU Make )
Makefile で、CSVやSubversionレポジトリからソースツリーを作業ディレクトリにエクスポートしてビルドするような場合...
たとえば、
以下のようなMakefileを書いた場合ですが、
make clean したときに、作業ディレクトリが存在しないとエラーになります。
ファイルが存在している場合だけ処理する方法, ifでフロー制御 ( GNU Make )
たとえば、 patch.txt が存在していた場合だけ、patchを適用したい。存在していなければ何もしない そんな作業をする Makefile を書くには if を使えばよい。
GNU Makeでの if 関数による 実行制御
Makeでは、条件に応じて処理を変えられることが判明。 以下の例では、カレントディレクトリに index.html が 存在している場合は、proc-a マクロを実行、そうでない場合は proc-b マクロを実行します。
Makefileでカレントディレクトリ内のディレクトリだけを抽出して使う
ブログ管理用の Makefile を書いているのだが、カレントディレクトリ以下にあるサブディレクトリだけを列挙したい。 サブディレクトリは、時間とともに変化するので、Makefileに直に書くのはやめたい。