Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

makeに関するamachangのブックマーク (3)

  • プログラミング言語Make 補遺:引数付きの関数 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「Makefileの書き方:プログラミング言語Make」のコメント欄で、shiroさんから「引数付き関数もユーザー定義できるよ」とご指摘いただきました。 http://www.gnu.org/software/automake/manual/make/index.htmlを見てみたら、最近のGNU Makeでは引数を扱えることが判明。例えば、次のように使えます。 SUBDIRS := src include test files = $(wildcard $(1)/*.erl) $(wildcard $(1)/*.hrl) ALL_FILES := $(foreach dir,$(SUBDIRS),$(call files,$(dir))) filesが引数付き関数(Make用語ではパラメータを持つ再帰的変数)です(($(wildcard $(1)/*.erl) $(wildcard $(

    プログラミング言語Make 補遺:引数付きの関数 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    amachang
    amachang 2007/10/25
    プログラミング言語としての Make。$(1) $(2) で引数を参照する(名前は使えない)。スペースを使った文字列は foreach でリストとして扱われる。foreach 関数があるのでループはできる…が、再帰が使えない><例は必見。
  • Makefileの書き方:プログラミング言語Make - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「Makefileの書き方、その勘どころ」にて: まだ、関数を使ってソースやターゲットを生成する方法とかパターン規則の説明をしてないので、続きを書くと思います。調べているうちに、GNU Makeの構文(の一部)はある種のプログラミング言語だという気がしてきました;そのことも書きたい気がしてます。 というわけで続きを書きます。 実は、関数呼び出しを使うときは、代入に「=」を使うより「:=」のほうが適切かつ効率的なときが多いのですが、その話は次の機会にします。 これの説明が中心になります。 内容: 前置き 変数の種類と変数定義 ソースコードの後のほうを参照すること Makeは上から下へと実行していくのだ MakeとLispは似ている 実例 ●前置き 以下、Make一般ではなくてGNU Makeの話です。GNU Makeより古いMakeにも備わっていた伝統的機能の説明はしません。 GNU Mak

    Makefileの書き方:プログラミング言語Make - 檜山正幸のキマイラ飼育記 (はてなBlog)
    amachang
    amachang 2007/10/25
    プログラミング言語としての Make。=は関数。:=は変数。参照(または呼出し)の仕方は同じで $(id) 。簡単にいうと = だと関数呼出しの結果が変数参照を含むような場合に順序を逆にできる。遅延評価。
  • Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「ほとんど忘れた、Makefile」 にて: Makefileなんてもう何年も書いたことがないぞ。ウーン、だめだ、忘れている。 「忘れている」ってよりは、僕の知識じゃ古すぎて、改めて勉強しないとダメでした*1。 なにしろ、makeだけじゃ機能が貧弱なんで、cpp(Cプリプロセッサ)やm4(マクロプロセッサ)と組み合わせて使っていた頃しか知らんからね(古すぎ!)。今じゃGNU Makeを(使おうと思えば)どこでも使えるから、GNU Makeを習えばそれでいいじゃないかな。僕は、Windows上のMSYS(MinGW - Minimal SYStem)でGNU Makeを動かしました。 というわけで、GNU Makeの手習いをしたからメモしておきます。以下、名前がMakefileじゃなくても、GNU Makeへの指示を書いたファイルは何でもMakefileと呼びます。 [追記]id:paell

    Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    amachang
    amachang 2007/10/25
    プログラミング言語としての Make。基本は余計な空白は入れない。基本空白はそのまま入るが、 if* 文の ,(カンマ) と代入文の =(イコール) の両サイドの空白は無視されるので、 $(EMPTY) を使って空白を挿入。
  • 1