Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
master-q opened this issue Feb 8, 2014 · 11 comments

Comments

@master-q
Copy link

master-q commented Feb 8, 2014

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
Copy link
Collaborator

$ review-buildscript omake  # OMake作る
$ review-buildscript make   # Makefile作る
$ review-buildscript rake   # Rakefile作る

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

@master-q
Copy link
Author

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

@master-q
Copy link
Author

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

@takahashim
Copy link
Collaborator

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

@takahashim
Copy link
Collaborator

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

@master-q
Copy link
Author

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

@takahashim
Copy link
Collaborator

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

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
Copy link
Author

ばっちりだと思います。

@takahashim
Copy link
Collaborator

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

@master-q
Copy link
Author

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

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

DefineCommandVars()

.SUBDIRS: .

@kdmsnr
Copy link
Collaborator

kdmsnr commented May 3, 2016

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants