SlideShare una empresa de Scribd logo
1 de 13
Makefile書けない人がMake4.0触ってみた

Lisp Meet Up #11
κeen(@blackenedgold)
2013年10月8日
GNU Make 4.0
リリース
目玉機能
組み込みGuile
サポート
Makeとは
•

まあ、知ってますよねー

•

依存関係を解消しながらタスクを実行する

•

POSIX標準(つまりGNU製以外もある)

•

Makefileを読んで実行する
Makefileの基本

変数定義
var = val
など(他にもある)
変数呼出し
$(var)
関数呼出し
$(func arg1, arg2, ...)
ターゲット定義
target: dep1 dep2 ....
body1
body2
.
.
Targetについてもう少し
●

targetと同じ名前のファイルと関連付けられる

●

depsは他のtarget

●

ファイルと関連付けたくなかったら組み込み
ターゲット .PHONYを使う
例)
.PHONY: clean
clean:
rm *.o
Guileについて
●

GNU 汎用途知的拡張言語

●

R5RS全部とR6RSの一部を実装したScheme処理系

●

GNU公式の拡張用組み込み言語

●

でもGNUですらあまり使ってない

●

一応JavaScript, Emacs Lisp, LuaからGuileにコンパイルでき
たりする
MakeからGuileを使ってみる
〜インストール〜
curl ftp://ftp.gnu.org/gnu/guile/guile-2.0.9.tar.gz | tar xzf cd guile-2.0.9
./configure
make
sudo make install
curl ftp://ftp.gnu.org/gnu/make/make-4.0.tar.gz | tar xzf cd make-4.0
./configure –with-guile
make
sudo make install

インストールが上手く行くとmakeの.FEATURES変数にguile
が入る
<demo0>
MakeからGuileを使ってみる
〜基本〜
基本、$(guile sexp)だけ。
●
sexpの返値を文字列に変換したものが$
(guile)の返値になる
●

<demo1>
MakeからGuileを使ってみる
〜もうちょっと〜

<demo2>
GuileからMakeを使ってみる
●

$(guile (load “file.scm”))でSchemeのファイルを読める

●

schemeからは(gmk-eval sexp)と(gmk-expand sexp)が使える
–

gmk-expand … 例の変換規則に従ってsexpを文字列に変換する

–

gmk-eval … sexpを文字列に変換しつつそのままMakefileの文として実行する

<demo3>
まとめ
●

MakeからGuileが呼べる

●

GuileからMakeが呼べる

●

可能性は色々ある

●

でも恐らく個人用途
おわり

Más contenido relacionado

La actualidad más candente

俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
ShunsukeNakamura17
 

La actualidad más candente (9)

リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたリーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
 
Write up reverse200
Write up reverse200Write up reverse200
Write up reverse200
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurl
 
Cプログラムを異なるマイコンで動作させる際のエンディアンとビットフィールドの取り扱い
Cプログラムを異なるマイコンで動作させる際のエンディアンとビットフィールドの取り扱いCプログラムを異なるマイコンで動作させる際のエンディアンとビットフィールドの取り扱い
Cプログラムを異なるマイコンで動作させる際のエンディアンとビットフィールドの取り扱い
 
js-ctypes - ネイティブコードを呼び出す新しいカタチ
js-ctypes - ネイティブコードを呼び出す新しいカタチjs-ctypes - ネイティブコードを呼び出す新しいカタチ
js-ctypes - ネイティブコードを呼び出す新しいカタチ
 
ネットワーク第3回目
ネットワーク第3回目ネットワーク第3回目
ネットワーク第3回目
 
俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
俺の let p = PathBuf::from("/test").into_os_string().to_str();はなぜコンパイルエラーか
 
これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)これだけMakefile (Basics of makefile)
これだけMakefile (Basics of makefile)
 

Destacado

Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみたReal World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
 
Camomile : A Unicode library for OCaml
Camomile : A Unicode library for OCamlCamomile : A Unicode library for OCaml
Camomile : A Unicode library for OCaml
Yamagata Yoriyuki
 
Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)
Anil Madhavapeddy
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
Hiroki Mizuno
 
OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012
Anil Madhavapeddy
 
Os Peytonjones
Os PeytonjonesOs Peytonjones
Os Peytonjones
oscon2007
 

Destacado (20)

Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみたReal World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
 
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとしたCL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
 
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
 
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
 
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろうCommon Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
 
Writing a fast HTTP parser
Writing a fast HTTP parserWriting a fast HTTP parser
Writing a fast HTTP parser
 
計算数学
計算数学計算数学
計算数学
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
 
Camomile : A Unicode library for OCaml
Camomile : A Unicode library for OCamlCamomile : A Unicode library for OCaml
Camomile : A Unicode library for OCaml
 
Using functional programming within an industrial product group: perspectives...
Using functional programming within an industrial product group: perspectives...Using functional programming within an industrial product group: perspectives...
Using functional programming within an industrial product group: perspectives...
 
Ocaml
OcamlOcaml
Ocaml
 
A taste of Functional Programming
A taste of Functional ProgrammingA taste of Functional Programming
A taste of Functional Programming
 
Haskell - Functional Programming
Haskell - Functional ProgrammingHaskell - Functional Programming
Haskell - Functional Programming
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocaml
 
Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)
 
An Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using HaskellAn Introduction to Functional Programming using Haskell
An Introduction to Functional Programming using Haskell
 
Introduction to haskell
Introduction to haskellIntroduction to haskell
Introduction to haskell
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
 
OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012OCaml Labs introduction at OCaml Consortium 2012
OCaml Labs introduction at OCaml Consortium 2012
 
Os Peytonjones
Os PeytonjonesOs Peytonjones
Os Peytonjones
 

Similar a Lispmeetup11

2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
nukaemon
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
airtoxin Ishii
 

Similar a Lispmeetup11 (6)

2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 

Último

Último (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Lispmeetup11