kmuto / review

Re:VIEW is flexible document format/conversion system
http://reviewml.org/
GNU Lesser General Public License v2.1
1.34k stars 214 forks source link

OMakefileのテンプレートをreviewのコマンドで吐けるようにできたらいいなー #232

Open master-q opened 10 years ago

master-q commented 10 years ago

OMakeをReVIEWのビルドラッパーとしてよく使っています。 ファイル更新を監視して自動再ビルドがはしるので便利です。

http://www.slideshare.net/master_q/reviewlibreofficeomake https://github.com/master-q/masterq-docs/blob/master/books/snatcher_ac0097/OMakefile

RE_FILES    = $(glob *.re)
ODG_FILES   = $(glob images/*/*.odg)
PNG_FILES   = $(replacesuffixes .odg, .png, $(ODG_FILES))
BOOKNAME    = snatcher_ac0097
OTHER_FILES = $(BOOKNAME).yaml CHAPS PREDEF POSTDEF _cover.tex

$(BOOKNAME).pdf: _cover.tex $(RE_FILES) $(OTHER_FILES) # $(PNG_FILES)
    rm -f $(BOOKNAME).pdf
    rm -rf $(BOOKNAME)-pdf
    review-pdfmaker $(BOOKNAME).yaml

.SUBDIRS: $(glob images/*/)
    %.png: %.odg
        unoconv -f png -o $@ $< || unoconv -n -f png -o $@ $< \
        || unoconv -f png -o $@ $< || unoconv -n -f png -o $@ $<

.DEFAULT: $(BOOKNAME).pdf

.PHONY: clean

clean:
    rm -f $(BOOKNAME).pdf *~
    rm -f images/*/*.png
    rm -rf $(BOOKNAME)-pdf

この手のラッパーを手で書いているとOMakeの便利さが拡散しないなーと思っていて、ReVIEWのサブコマンドでビルドスクリプトを自動生成できたらできたらうれしいなぁと。 Railsのscaffoldのようなイメージを持っています。

takahashim commented 10 years ago
$ review-buildscript omake  # OMake作る
$ review-buildscript make   # Makefile作る
$ review-buildscript rake   # Rakefile作る

みたいな感じでしょうか?

master-q commented 10 years ago

はい。なんかそんな感じでテンプレを吐いてくれたらうれしいかなーという提案でした。 緊急度はありません。

master-q commented 10 years ago

あと個人的にunoconvを使った図の自動変換が好きで、このあたりのナレッジもテンプレを吐いてくれれば伝搬するかなぁと妄想していました。

takahashim commented 10 years ago

画像の自動変換は #148 でもありましたが、中途半端な対応はどうかなあ、というところですね…。

takahashim commented 10 years ago

あと、設定ファイルのファイル名は$(BOOKNAME)の値に限らず config.yml とかに決め打ちした方が実用上便利かと思うのですが、$(BOOKNAME)に合わせる利点は何かあるのでしょうか?(要するにreview-pdfmaker $(BOOKNAME).yamlじゃなくてreview-pdfmaker config.ymlとかにしたい)

master-q commented 10 years ago

あ。$(BOOKNAME)にする意味はまったくありません。 画像の自動変換はpng<=>epsというよりもドローソフトとの連携という意味でした。 でもたしかにデフォルトで設定されることが良いことではないかもしれません。

takahashim commented 10 years ago

↓では、こんな感じでしょうか。

RE_FILES    = $(glob *.re)
BOOKNAME    = book   ## Replace your book name
CONFIG_FILE = config.yml
OTHER_FILES = $(CONFIG_FILE) CHAPS PREDEF POSTDEF

## ODG_FILES   = $(glob images/*/*.odg)
## PNG_FILES   = $(replacesuffixes .odg, .png, $(ODG_FILES))

all: $(BOOKNAME).pdf $(BOOKNAME).epub

$(BOOKNAME).pdf: _cover.tex $(RE_FILES) $(OTHER_FILES) ## $(PNG_FILES)
    rm -f $(BOOKNAME).pdf
    rm -rf $(BOOKNAME)-pdf
    review-pdfmaker $(CONFIG_FILE)

$(BOOKNAME).epub: $(RE_FILES) $(OTHER_FILES) ## $(PNG_FILES)
    rm -f $(BOOKNAME).epub
    rm -rf $(BOOKNAME)-epub
    review-epubmaker $(CONFIG_FILE)

### For auto image convert
#.SUBDIRS: $(glob images/*/)
#    %.png: %.odg
#        unoconv -f png -o $@ $< || unoconv -n -f png -o $@ $< \
#        || unoconv -f png -o $@ $< || unoconv -n -f png -o $@ $<

.DEFAULT: $(BOOKNAME).pdf

.PHONY: clean

clean:
    rm -f $(BOOKNAME).pdf $(BOOKNAME).epub *~
    rm -rf $(BOOKNAME)-pdf  $(BOOKNAME)-epub
##    rm -f images/*/*.png
master-q commented 10 years ago

ばっちりだと思います。

takahashim commented 10 years ago

それと、Makefileだとターゲットには$(BOOKNAME).pdfとかじゃなくてpdfとかの入力しやすいものにしていたのですが、OMakeだと具体的なファイル名が良いのでしょうか?

master-q commented 10 years ago

すいません、ちょっとたてこんでいました。。 omakeはファイル名の依存を検査します。pdfだと-Pオプションが使えなくなってしまうと思います。pdfファイルが偽のターゲットになるからです。

あと忘れていたのですがomakeには以下のOMakerootファイルもOMakefileとは別に用意してやる必要があります。

DefineCommandVars()

.SUBDIRS: .
kdmsnr commented 8 years ago

ツールの好みがあるので、入れないほうがよさそう(個人的にはomake使ってます)