際際滷
Submit Search
GNU make 4.0に採かいる
?
3 likes
?
2,345 views
E
emasaka
Follow
1 of 15
Download now
Download to read offline
More Related Content
GNU make 4.0に採かいる
1.
GNU make 4.0に 採かいる @emasaka
2.
GNU make 4.0鞠 ¢ 10/8リリ`ス ¢ 麼な仟C嬬 C --output-syncK双g佩で竃薦が詞ざるのを契ぐ C --traceg佩するコマンドを竃薦 C GuileをMみzめる
3.
Guile ¢ GNUのSchemeインタ`プリタ ¢ アプリMみzみが麼な朕議 C TclとかLuaとかmrubyとかと揖
4.
ブログにも慕いた
5.
やってみる1 ¢ Guileをインスト`ルしておく C ¢ $ sudo apt-get
install guile-2.0 guile-2.0-devs 仝guile-2.0々パッケ`ジはなくてもいいと房うけ ど、Schemeコ`ドの嘛_Jのため
6.
やってみる2 ¢ GNU make 4.0のソ`スをもってきて婢_ ¢ ./configure C このときにGuile┘薀ぅ屮薀蝪が秘っていると、makeの Guileサポ`トが嗤燭砲覆 ¢ C おそらくLinuxディストロではo燭砲覆襪里任錬 --with-guile=noで苧幣議にo燭
7.
やってみる3 ¢ ¢ $ make $ ldd
./make | grep guile libguile-2.0.so.22 => /usr/lib/libguile-2.0.so.22 (0x00007f6482291000)
8.
_J ¢ .FEATURES篳に^guile ̄が秘っていればOK $?cat?features.mk all: ????????@echo?$(.FEATURES) $?./make??f?features.mk target?specific?order?only?second?expansion?else?if? shortest?stem?undefine?oneshell?archives?jobserver? output?sync?check?symlink?guile?load
9.
聞いかた ¢ $(guile ?)v方 ¢ ようは$(shell ?)v方でシェルを柵ぶのといっしょ
10.
箭1困箸蠅△┐些薦 all: echo?$(guile?'("Hello,?World!"))
11.
箭2困覆鵑Schemeっぽいの sexp?=?(map?(lambda?(x)?(+?x?3))?(iota?10)) all: @echo?$(guile?$(sexp))
12.
箭3FizzBuzzshell井 http://d.hatena.ne.jp/eel3/20110924/1316791928 より all:?$(shell?seq?1?1?100) $(shell?seq?3?3?100): @echo?Fizz $(shell?seq?5?5?100): @echo?Buzz $(shell?seq?15?15?100): @echo?FizzBuzz .DEFAULT: @echo?$@
13.
箭3FizzBuzzguile井 all:?$(guile?(use?modules?(srfi?srfi?1)))?$ (guile?(iota?100?1?1)) $(guile?(iota?100?3?3)): @echo?Fizz $(guile?(iota?100?5?5)): @echo?Buzz $(guile?(iota?100?15?15)): @echo?FizzBuzz .DEFAULT: @echo?$@
14.
箭3FizzBuzzg佩rg $?time?./make??f?fb?scm.mk?>&?/dev/null ./make??f?fb?scm.mk?>&/dev/null??0.10s?user? 0.06s?system?47%?cpu?0.337?total $?time?./make??f?fb?sh.mk?>&?/dev/null ./make??f?fb?sh.mk?>&/dev/null??0.05s?user? 0.04s?system?35%?cpu?0.258?total shell井のほうが堀い
15.
箭4SchemeでmakeのDSL define?dsl (use?modules?(srfi?srfi?1)) (define?targets?'()) (define?(showtargets) ??(string?join?(reverse?targets)?"n")?) (define?macro?(push!?place?item) ??`(set!?,place?(cons?,item?,place))?) (define?(mklist?>str?lst) ??(string?join?(map?symbol?>string?lst))?) (define?macro?(deftarget?tgt?dep?.?cmds) ??(push!?targets ?(format?#f?"~a:~a~a" ?tgt?(mklist?>str?dep) ?(fold?(lambda?(x?r) ?(string?append?r?"nt"?(mklist?>str?x)))?""?cmds?))?)) (deftarget?all?(foo) ??(@./foo)) (deftarget?foo?(foo.c) ??(cc?foo.c??o?foo)?) endef dummy?:=?$(guile?$(dsl)) $(guile?(gmk?eval?(showtargets)))
Download