このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Makefileのドキュメンテーション

Makefileもある程度大きくなると、ドキュメントが必要になります。JavadocEDocのように、ドキュメンテーションコメントから文書を生成してくれるツールがないかな? -- たいした要求は持ってなかったので、とりあえず作ってみました。

仕様は単純です。

  1. #*からはじまる行はドキュメンテーションコメントとみなす。
  2. 出現した#*の次の行が変数定義、またはifdef/ifndef行なら、コメントは変数の説明とみなす。
  3. 出現した#*の次の行がルールなら、コメントはターゲットの説明とみなす。
  4. それ以外の場合は、コメントは見出しとみなす。

いまのところ、この程度の機能でも間に合っています。(文字エンコーディングUTF-8と仮定してます。)

プログラムは、滅多に使わないPerlで書いてみました → 別ウィンドウにテキストで表示(文字エンコーディングはUTF-8) 生成したHTML文書の例 → 別ウィンドウに表示

もとになったMakefileの一部を抜粋すると、こんな感じ(↓)です。


… … …

#* 生成された実行可能ファイルを入れるディレクト
JS_BIN_DIR :=../js_bin
#* 生成されたドキュメンテーション・ファイルを入れるディレクト
JS_DOC_DIR :=../js_doc
#* 各種の開発ツールをまとめてインストールしたディレクト
JS_TOOLS_DIR :=../../jstools

… … …

#* Java
#

#* java VM の起動コマンド(引数含まず)
ifndef JAVA
#* javaがインストールされたディレクト
ifdef JAVA_HOME
JAVA:=$(JAVA_HOME)/bin/java
else
JAVA:=java
endif
endif # !JAVA

… … …

#* ターゲット

.PHONY: lint obj doc all skel
#* lint obj doc
all: lint obj doc

#* JSLintによるチェック
lint: $(JsSrcDir)/.lint.timestamp

#* 配布用JavaScriptファイルの作成
obj: $(objects)

#* API文書の作成
doc: $(doc_index)

… … …