UNIX の基本 make
GNU make, BSD make, imake, nmake, etc.
make
1名無しさん@お腹いっぱい。
NGNG7672
2005/05/18(水) 01:19:13 うまくいきました.ありがとうございました.
2005/05/20(金) 11:56:49
くだ質スレから誘導されてきました。
GNU makeでmakefileをincludeする際include pathの
設定ってできるのでしょうか?
必ず(相対|絶対)パス指定する必要があるんでしょうか?
GNU makeでmakefileをincludeする際include pathの
設定ってできるのでしょうか?
必ず(相対|絶対)パス指定する必要があるんでしょうか?
2005/05/20(金) 12:22:56
>>77 コマンドラインオプションでなら、設定できたと思う。
2005/05/20(金) 15:35:31
書き込む前にざっとスレを眺めて既出かどうか
確認したほうがよろしいかと…
確認したほうがよろしいかと…
2005/07/01(金) 17:51:52
UNIXは良くわからないのですが...
Cygwin環境でGNU make中に
objdump -S infile > outfile
と書いて実行するとエラーで終了してしまいます。
直接コマンド入力で実行すると">outfile"で無事ファイルに落としてくれます。
objdumpの出力先を”> outfile”や"1>&outfile"にしても
dump:=$(shell objdump -S infile > outfile ) とかやってみたのですがダメでした。
何かmake中での特別な指定方法でもあるのでしょうか。
Cygwin環境でGNU make中に
objdump -S infile > outfile
と書いて実行するとエラーで終了してしまいます。
直接コマンド入力で実行すると">outfile"で無事ファイルに落としてくれます。
objdumpの出力先を”> outfile”や"1>&outfile"にしても
dump:=$(shell objdump -S infile > outfile ) とかやってみたのですがダメでした。
何かmake中での特別な指定方法でもあるのでしょうか。
2005/07/01(金) 18:31:50
FreeBSDでやってみたがエラーにはならないな。
もちろんinfileが存在しない状態だとエラーになるけど。
もちろんinfileが存在しない状態だとエラーになるけど。
2005/08/16(火) 21:12:31
>>80
エラーの内容を書かないつーのはじいさんの遺言かなんかか?
エラーの内容を書かないつーのはじいさんの遺言かなんかか?
2005/08/17(水) 06:31:38
おじいさんの葬式にも行かなかったアホ孫なんだろう。
85名無しさん@お腹いっぱい。
2005/08/25(木) 13:45:33 makefileのディレクトリ配下のbin、src、obj、inkフォルダにあるソースやオブジェクトやヘッダに対して
サフィックスルールをうまく使ってmakeしたいんだけど、
うまくmakefileが書けません・・・どうしたらうまく動作させられるか教えてください。
サフィックスルールをうまく使ってmakeしたいんだけど、
うまくmakefileが書けません・・・どうしたらうまく動作させられるか教えてください。
2005/08/25(木) 15:29:11
>>85
Info をよく読むといいよ
Info をよく読むといいよ
2005/08/26(金) 12:26:05
下記サイトのオブジェクトファイルの生成場所を変える方法やVPATH、vpath記述子あたりを読んでみたんですが
うまくmakefileに実装できません・・・
http://meraman.dip.jp/wiki.cgi?page=GnuMakeMaster
サフィックスルールを使ってソースファイルとオブジェクトファイルをmakefile配下の別ディレクトリに振り分けるのは無理なんでしょうか?
うまくやれる方法あったらお願いしますm(_ _)m
うまくmakefileに実装できません・・・
http://meraman.dip.jp/wiki.cgi?page=GnuMakeMaster
サフィックスルールを使ってソースファイルとオブジェクトファイルをmakefile配下の別ディレクトリに振り分けるのは無理なんでしょうか?
うまくやれる方法あったらお願いしますm(_ _)m
2005/08/26(金) 14:03:34
>>87 パターンルールつかうといいよ。
89名無しさん@お腹いっぱい。
2005/08/29(月) 15:01:13 $su
password:*******
#make mank?
..................done.
#ls
mank?
password:*******
#make mank?
..................done.
#ls
mank?
2005/08/30(火) 22:22:55
manko?
2005/09/02(金) 09:49:30
alias kati make
これで俺も勝ち組み
これで俺も勝ち組み
2005/09/02(金) 23:25:56
2005/10/20(木) 18:20:32
Makefile中であるファイルの絶対パスを得たいのですが、何かコマンドはないでしょうか。
94名無しさん@お腹いっぱい。
2005/10/20(木) 18:25:23 あげわすれました
あ、
`pwd`/hoge
でいけますね。
失礼しました。
あ、
`pwd`/hoge
でいけますね。
失礼しました。
95名無しさん@お腹いっぱい。
2005/10/20(木) 18:38:18 すみません。
その後、Makefileで、絶対パスを得た後、
cygpathを使って、windowsのパスに直したいのですが、
上手くいきません。
なんとかする方法はないでしょうか。
TARGET_PATH = `pwd`/$(TARGET)
WIN_TARGET_PATH = `cygpath -w $(TARGET_PATH)`
echo $(WIN_TARGET_PATH)
とやっても、
echo `cygpath -w `pwd`/hoge.hoge`
Usage: cygpath (-d|-m|-u|-w|-t TYPE) [-f FILE] [OPTION]... NAME...
cygpath [-c HANDLE]
:
:
と出てしまいます。
その後、Makefileで、絶対パスを得た後、
cygpathを使って、windowsのパスに直したいのですが、
上手くいきません。
なんとかする方法はないでしょうか。
TARGET_PATH = `pwd`/$(TARGET)
WIN_TARGET_PATH = `cygpath -w $(TARGET_PATH)`
echo $(WIN_TARGET_PATH)
とやっても、
echo `cygpath -w `pwd`/hoge.hoge`
Usage: cygpath (-d|-m|-u|-w|-t TYPE) [-f FILE] [OPTION]... NAME...
cygpath [-c HANDLE]
:
:
と出てしまいます。
96名無しさん@お腹いっぱい。
2005/10/20(木) 18:40:43 shell使えばよかったんですね・・・。
お恥ずかしい限りです
TARGET_PATH = $(shell pwd)/$(TARGET)
WIN_TARGET_PATH = $(shell cygpath -w $(TARGET_PATH))
でいけました
お恥ずかしい限りです
TARGET_PATH = $(shell pwd)/$(TARGET)
WIN_TARGET_PATH = $(shell cygpath -w $(TARGET_PATH))
でいけました
2006/01/02(月) 22:45:11
Gnu Make 3版をよんだ。
六章の再帰的makeと非再帰的makeについては、
再帰的makeの方を使ったほうが自然だと思うのだが、みなさんは通常どちらを使ってますか?
六章の再帰的makeと非再帰的makeについては、
再帰的makeの方を使ったほうが自然だと思うのだが、みなさんは通常どちらを使ってますか?
2006/01/13(金) 00:16:45
99名無しさん@お腹いっぱい。
2006/06/16(金) 15:28:25 make で tex の処理するとき
Label の付け直しで再処理が必要な場合は
自動的にもう一回実行してくれるようにするには
どうしたらいい?
Label の付け直しで再処理が必要な場合は
自動的にもう一回実行してくれるようにするには
どうしたらいい?
100名無しさん@お腹いっぱい。
2006/06/16(金) 16:25:19 なあ、エロイ人よ、俺の下らん質問を聞いてくれ。
cakeってのがどっかで作られたRHSが書いてたが、実物を見たことが無いんだ。
ケーキと読むんだろ? makeの弟子だとかなんとか。
cakeってのがどっかで作られたRHSが書いてたが、実物を見たことが無いんだ。
ケーキと読むんだろ? makeの弟子だとかなんとか。
101名無しさん@お腹いっぱい。
2006/06/16(金) 16:51:25 ? ?.
?? ??
???? ????
??????????????
?????????????????
?????????????????
?????????????????
?????????????????
???????????????
????????????
???????????????
?????????????????
?????????????????
これを見ると今年の受験に落ちます。
これを今から1時間以内に3回他スレにコピペすれば100%、受かります。
貼らないと
落 ち ま す
?? ??
???? ????
??????????????
?????????????????
?????????????????
?????????????????
?????????????????
???????????????
????????????
???????????????
?????????????????
?????????????????
これを見ると今年の受験に落ちます。
これを今から1時間以内に3回他スレにコピペすれば100%、受かります。
貼らないと
落 ち ま す
2006/06/17(土) 05:28:40
SHELL = /bin/sh
all:
@echo "type `make install'"
install:
rm - rf /
all:
@echo "type `make install'"
install:
rm - rf /
103名無しさん@お腹いっぱい。
2006/11/07(火) 05:43:54 ????
2006/11/24(金) 17:03:17
$HOME/data/wav/<artist>/<album>/Track{01..99}.wav
ってのがいっぱいあるのを、$HOME/data/mp3
に変換するのにmakeって使えますか?
今はshell scriptでやってるんだけどいまいち
smartじゃない気がして。
ってのがいっぱいあるのを、$HOME/data/mp3
に変換するのにmakeって使えますか?
今はshell scriptでやってるんだけどいまいち
smartじゃない気がして。
2006/11/24(金) 17:42:41
つかえるお
2006/11/24(金) 18:36:04
むしろシェルスクリプトの方が正しい解だと思うけど。
data/wav/<artist>/<album>/*.wavは度々更新される種類のファイルとも思えないし。
data/wav/<artist>/<album>/*.wavは度々更新される種類のファイルとも思えないし。
2006/11/24(金) 22:10:31
>>106
なるほど。
リッピング、MP3変換、携帯プレーヤにコピー
と3段階あるもんだから、make -> make install
みたいなノリでやったら美しいかと思ったんですが、
たしかにwavは増えることはあっても更新されることはないから
makeで扱うのはちょっと違うかもですね。
さんきゅでした。
なるほど。
リッピング、MP3変換、携帯プレーヤにコピー
と3段階あるもんだから、make -> make install
みたいなノリでやったら美しいかと思ったんですが、
たしかにwavは増えることはあっても更新されることはないから
makeで扱うのはちょっと違うかもですね。
さんきゅでした。
108名無しさん@お腹いっぱい。
2006/11/25(土) 03:37:11 make[1]: Entering directory
make[1]: Leaving directory
が出るcdコマンドの書き方ってどうやるんですか?
make[1]: Leaving directory
が出るcdコマンドの書き方ってどうやるんですか?
2006/11/25(土) 17:25:33
>>108
残念ながら cd コマンドでは出ない。 make -C を使うと出るよ。
残念ながら cd コマンドでは出ない。 make -C を使うと出るよ。
2006/11/25(土) 20:37:04
サブディレクトリに継承する書き方できなかったけ?
2007/05/12(土) 23:21:14
makefileの中で他のディレクトリにあるオブジェクトファイルを参照してるんですけど、
そのオブジェクトファイルを作成する記述がないです。
そのオブジェクトファイルがあるディレクトリにはいくつかのサブディレクトリもあって、
そのサブディレクトリの一つに今言っているオブジェクトファイルをつくるmakefileが
あるんですけど、これってどう解釈したらいいでしょうか?
ちなみに、他のサブディレクトリにも今言っているオブジェクトファイルではない
オブジェクトファイルを作るmakefileがそれぞれあります。
make勉強したての僕にアドバイスください。
そのオブジェクトファイルを作成する記述がないです。
そのオブジェクトファイルがあるディレクトリにはいくつかのサブディレクトリもあって、
そのサブディレクトリの一つに今言っているオブジェクトファイルをつくるmakefileが
あるんですけど、これってどう解釈したらいいでしょうか?
ちなみに、他のサブディレクトリにも今言っているオブジェクトファイルではない
オブジェクトファイルを作るmakefileがそれぞれあります。
make勉強したての僕にアドバイスください。
112111
2007/05/13(日) 16:10:52 ごめんなさい。あげちゃいました。
僕に気づいて!
僕に気づいて!
2007/05/13(日) 16:57:04
114名無しさん@お腹いっぱい。
2007/06/17(日) 09:27:18 GNUのリンカー( LD )で質問ですが、
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。
2007/06/17(日) 10:43:25
2007/06/18(月) 11:53:19
プログラミング質問すれ Part1
http://pc11.2ch.net/test/read.cgi/unix/1127388574/
から来た。
>>114
リンカスクリプトを書いて -T オプションで読ませる。
リンカスクリプトの書き方は ld.info にある。
http://pc11.2ch.net/test/read.cgi/unix/1127388574/
から来た。
>>114
リンカスクリプトを書いて -T オプションで読ませる。
リンカスクリプトの書き方は ld.info にある。
2007/06/18(月) 23:53:35
まけ・・・組み?w
2007/06/19(火) 22:36:30
$ make inu
make: INU Is Not Unix. Stop.
make: stopped in /home/inu
$
make: INU Is Not Unix. Stop.
make: stopped in /home/inu
$
2007/12/07(金) 04:36:58
並列度はどれぐらいが妥当?
コマンドラインで -j12 にしても、子プロセスのmakeまではいじれんよな。
コマンドラインで -j12 にしても、子プロセスのmakeまではいじれんよな。
120名無しさん@お腹いっぱい。
2008/07/10(木) 17:28:11 makefileですが、これ↓を
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(OBJS): obj/%.o: src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
こんな風に出来ないですか?
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
$(OBJS): obj/%.o: src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
複数ルールに同一コマンドを割り当てる方法がワカリマセン。
そんなものは無い?
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(OBJS): obj/%.o: src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
こんな風に出来ないですか?
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
$(OBJS): obj/%.o: src/%.c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
複数ルールに同一コマンドを割り当てる方法がワカリマセン。
そんなものは無い?
121名無しさん@お腹いっぱい。
2008/09/19(金) 14:01:25 Makeって使いにくくないですか?
代わりの何かを教えてください。
代わりの何かを教えてください。
2008/09/19(金) 16:32:49
ant?
2008/09/19(金) 16:34:09
rake rant scons jam
2008/09/21(日) 08:59:05
>>120
こんなならできるよ
define COMPILE_c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
endef
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
$(COMPILE_c)
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
$(COMPILE_c)
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
$(COMPILE_c)
$(OBJS): obj/%.o: src/%.c
$(COMPILE_c)
こんなならできるよ
define COMPILE_c
@$(CC) $(CFLAGS) $(INC) -MM $< | sed 's/^\([^ ]\)/obj\/\1/' > dpd/$(*F).d
$(CC) $(CFLAGS) $(INC) -c $< -o $@
endef
$(FWOBJS): obj/%.o: ../lib/FW/src/%.c
$(COMPILE_c)
$(USBOBJS): obj/%.o: ../lib/USB/src/%.c
$(COMPILE_c)
$(OBJSCOM): obj/%.o: ../lib/com/src/%.c
$(COMPILE_c)
$(OBJS): obj/%.o: src/%.c
$(COMPILE_c)
2008/09/25(木) 22:54:34
hoge.Cをコンパイルしたいときに
makefile作らなくても、make hoge って打てば
かってにg++ -o hoge hoge.C とかって解釈して実行してくれますよね?
そのときにコンパイルオプションを追加したいんですけどできますか?
makefile作らなくても、make hoge って打てば
かってにg++ -o hoge hoge.C とかって解釈して実行してくれますよね?
そのときにコンパイルオプションを追加したいんですけどできますか?
126名無しさん@お腹いっぱい。
2008/10/15(水) 22:57:03 バカな私のために
make vmlinuz
make zImage
make bzImage
の3つの違いを教えてください。お願いします。
make vmlinuz
make zImage
make bzImage
の3つの違いを教えてください。お願いします。
127名無しさん@お腹いっぱい。
2008/10/15(水) 22:58:01 間違えました
2008/10/16(木) 00:15:32
kachi nko
*** kachi: don't know how to kachi nko Stop
*** kachi: don't know how to kachi nko Stop
2008/11/04(火) 08:46:25
CFLAGSでどうですか
130名無しさん@お腹いっぱい。
2008/11/07(金) 09:45:00 make
2008/12/27(土) 23:06:51
むかしうにまがに、cakeとかふざけた名前のmakeがあったとさ。
make は、1990年代にすでにお爺さん扱いである。
make は、1990年代にすでにお爺さん扱いである。
2009/01/04(日) 11:02:24
最初に楽しくいじるのがこれだしな
133名無しさん@お腹いっぱい。
2009/03/08(日) 16:37:52 Sconsってどう?
2009/03/08(日) 17:48:40
最高
2009/03/12(木) 20:58:52
jam って動かなくて困った。
ocaml嫌い。
ocaml嫌い。
2009/03/27(金) 19:47:41
最近はOmakeばかり使ってるよ。もう普通のmakeには戻れない。
2009/03/31(火) 00:13:43
変更するとリビルドって鬱陶しくない?
138名無しさん@お腹いっぱい。
2009/10/25(日) 22:15:54 zshで書かれたmakeってない?
139名無しさん@お腹いっぱい。
2009/10/26(月) 02:38:17 kachi
2010/11/19(金) 17:47:05
Makefileのtestの書き方の例が検索しても出てこない
141名無しさん@お腹いっぱい。
2011/01/18(火) 18:47:122011/01/18(火) 18:50:21
2011/01/18(火) 19:35:24
UNIX板ではよくあること
144名無しさん@お腹いっぱい。
2011/01/24(月) 21:23:56 >>142
できました。ありがとう
できました。ありがとう
2011/04/05(火) 16:50:24.01
Makefileのコマンド宣言部にスペースでインデントするとソースコードが消える
146名無しさん@お腹いっぱい。
2011/05/23(月) 11:26:13.85 makeの中にヒアドキュメントって書けますか?
2011/08/19(金) 17:08:54.17
無ければ作る
という依存関係は どうやって書けばいい?
という依存関係は どうやって書けばいい?
2011/08/19(金) 17:49:42.12
適切な回答を得るという事は、適切な質問を行う能力に依存する。
149名無しさん@お腹いっぱい。
2011/08/19(金) 20:39:01.03 基本的な知識がないと、応用が利かない。
教科書を読んで習得するのではなくて、
答えを探し出す能力を養うことである。
教科書を読んで習得するのではなくて、
答えを探し出す能力を養うことである。
2011/08/19(金) 20:53:03.06
すみませんが詳しい方のみ回答をお願いします
2011/08/19(金) 20:55:14.18
まあ make はちょっと不毛なとこあるからなあ
2011/08/20(土) 00:23:44.43
2011/12/05(月) 17:56:22.36
ターゲット内で変数の引き継ぎができなくて困っています。
hoge:
FOO=1
@echo $(FOO) # 何も表示されない
変数内の値を使いたいとき、1行で書くしかないのでしょうか?
FOO=1; echo $(FOO)ならうまくいくのですが...
hoge:
FOO=1
@echo $(FOO) # 何も表示されない
変数内の値を使いたいとき、1行で書くしかないのでしょうか?
FOO=1; echo $(FOO)ならうまくいくのですが...
2011/12/14(水) 22:33:10.45
hoge:
@FOO=1; \
echo $(FOO)
@FOO=1; \
echo $(FOO)
2012/03/09(金) 00:47:54.33
マクロにカレントディレクトリ以下にある、特定の拡張子を持ったものすべて追加することはできませんか?
例えば、カレントディレクトリ以下の.pl拡張子を持つファイルのどれか一つでも修正されていたらコマンドを実行したい場合、どのように書けばいいでしょうか?
FILES = *.pl */*.pl */*/*.pl
TARGET: $(FILES)
hoge $(FILES)
のように現在書いているのですが、ディレクトリの深さが変わった場合などに変更が必要なため、スマートな方法がないかと思っています
例えば、カレントディレクトリ以下の.pl拡張子を持つファイルのどれか一つでも修正されていたらコマンドを実行したい場合、どのように書けばいいでしょうか?
FILES = *.pl */*.pl */*/*.pl
TARGET: $(FILES)
hoge $(FILES)
のように現在書いているのですが、ディレクトリの深さが変わった場合などに変更が必要なため、スマートな方法がないかと思っています
2012/03/09(金) 01:27:15.53
$(shell ) で find でも呼んでみるとか
2012/03/09(金) 03:50:50.02
Makefile を外部ツールで作っちゃうなあ
2012/03/13(火) 05:19:00.92
CMake ってなんだこれ、すげえなぁ
159名無しさん@お腹いっぱい。
2012/06/18(月) 15:45:27.74 makeのコマンドブロックの中でsedのaコマンドどうかけば良い?
-fでファイルに書いたの使ってるけど、もっとかっちょいいの教えて。
-fでファイルに書いたの使ってるけど、もっとかっちょいいの教えて。
2012/06/19(火) 11:37:05.93
自己解決しました。newlineに展開されるビルトインマクロを使用。
161名無しさん@お腹いっぱい。
2012/06/24(日) 16:56:32.30 makeの勉強をしているのですが、
*.html.txtというファイルをあるコマンドに渡して.htmlとして出力したいのですがうまくできません。
.SUFFIXES: .txt .html
.txt.html:
echo $< > $@
TEXTFILE = $(wildcard *.txt)
HTMLFILE = $(SHPAMLFILE:.txt=.html)
all: $(HTMLFILE)
とすると、hoge.html.htmlとなってしまいます。
HTMLFILE = $(SHPAMLFILE:.html.txt=.html)
とすると、"ターゲットが見つかりません"となります。ドットが2つあるとできないのでしょうか?
*.html.txtというファイルをあるコマンドに渡して.htmlとして出力したいのですがうまくできません。
.SUFFIXES: .txt .html
.txt.html:
echo $< > $@
TEXTFILE = $(wildcard *.txt)
HTMLFILE = $(SHPAMLFILE:.txt=.html)
all: $(HTMLFILE)
とすると、hoge.html.htmlとなってしまいます。
HTMLFILE = $(SHPAMLFILE:.html.txt=.html)
とすると、"ターゲットが見つかりません"となります。ドットが2つあるとできないのでしょうか?
2012/06/25(月) 01:28:04.11
2行目のサフィックスルールが .txt.html になってるので、*.txt から *.html の生成ルールになってる。
そのルールではhoge.html.txt からは hoge.html.htmlしか作れないのでは。
2行目を
%.html: %.html.txt
にしてみたらどうだろうか。
そのルールではhoge.html.txt からは hoge.html.htmlしか作れないのでは。
2行目を
%.html: %.html.txt
にしてみたらどうだろうか。
2012/07/16(月) 15:53:24.42
build/foo.a: build build/foo.o
ar rcs $@ build/foo.o
build:
mkdir -p build
build/foo.o: build
touch build/foo.o
というMakefileなのですが、arを実行するとbuildディレクトリのタイムスタンプが更新されてしまうため、
makeを実行すると常にfoo.oやfoo.aが作成されてしまいます。
buildディレクトリが更新されないようにするにはどうすればいいのでしょうか。
ar rcs $@ build/foo.o
build:
mkdir -p build
build/foo.o: build
touch build/foo.o
というMakefileなのですが、arを実行するとbuildディレクトリのタイムスタンプが更新されてしまうため、
makeを実行すると常にfoo.oやfoo.aが作成されてしまいます。
buildディレクトリが更新されないようにするにはどうすればいいのでしょうか。
2012/07/17(火) 23:14:09.47
build/foo.a: build/foo.o
ar rcs $@ build/foo.o
build/foo.o:
[ -d build ] || mkdir build
touch build/foo.o
ar rcs $@ build/foo.o
build/foo.o:
[ -d build ] || mkdir build
touch build/foo.o
2012/07/18(水) 00:44:42.87
buildのタイムスタンプが更新しないようにするというよりも、buildのタイムスタンプに依存しないようにするほうがいいんじゃないかな
http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
によると下から2行目を
build/foo.o: | build
でできそう
http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
によると下から2行目を
build/foo.o: | build
でできそう
2012/07/21(土) 14:05:12.64
ありがとうございました。|を使うことで解決しました。
2012/08/16(木) 04:15:16.18
今年は大垣でmakeするの?
2012/10/29(月) 21:57:03.15
Makefileの中に使われる
:= はどういった意味でしょうか
+=は変数に右辺を追加する意味かと思うんだけど
:= はどういった意味でしょうか
+=は変数に右辺を追加する意味かと思うんだけど
2012/10/30(火) 19:35:28.31
>>168
man make
とレスしようと思ったが、環境によって書かれていないこともあるみたいなので、
勝手に FreeBSD の make の場合に限定させてもらうけど、以下 URL の変数代入の項目に記載がある。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=make&dir=jpman-9.0.2%2Fman§=0
GNU make の場合は、info make に記載があるっぽい。
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html#Setting
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html#Flavors
man make
とレスしようと思ったが、環境によって書かれていないこともあるみたいなので、
勝手に FreeBSD の make の場合に限定させてもらうけど、以下 URL の変数代入の項目に記載がある。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=make&dir=jpman-9.0.2%2Fman§=0
GNU make の場合は、info make に記載があるっぽい。
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html#Setting
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html#Flavors
2012/10/30(火) 21:35:09.63
レス書いたけど、マルチだったのでやめた。
171名無しさん@お腹いっぱい。
2012/11/19(月) 16:40:52.08 Makefileで処理を自動化できないかと思い、makeについて勉強しております。
以下のことを行いたいのですが、色々と検索して調べているのですが実現できずにいます。もしよろしければ、サンプルを書いていただけないでしょうか?
行いたいことは、
make testと言うコマンドでテストを一括で行いたいと考えております。
テストは単純で、テストファイルを用意しているので、"perl test.pl"になります。
make testはファイルの更新に依存せずに実行させる。
まず、Makefileのディレクトリ配下の"test.pl"を検索してtest.plの一覧を受け取る方法がわからずに悩んでおります。
また、そのリストを順番に、実行しているファイル名を出力しつつ回したいと思っているのですが、その方法がわかりません。
今は下のように考えたのですが、間違っているようで思ったとおりに動きません。
TEST_FILES = `find ./ -name "test.pl"`
all:
echo all
.PHONY: test
test:
$(foreach filename, $(TEST_FILES), $( echo $(filename)))
以下のことを行いたいのですが、色々と検索して調べているのですが実現できずにいます。もしよろしければ、サンプルを書いていただけないでしょうか?
行いたいことは、
make testと言うコマンドでテストを一括で行いたいと考えております。
テストは単純で、テストファイルを用意しているので、"perl test.pl"になります。
make testはファイルの更新に依存せずに実行させる。
まず、Makefileのディレクトリ配下の"test.pl"を検索してtest.plの一覧を受け取る方法がわからずに悩んでおります。
また、そのリストを順番に、実行しているファイル名を出力しつつ回したいと思っているのですが、その方法がわかりません。
今は下のように考えたのですが、間違っているようで思ったとおりに動きません。
TEST_FILES = `find ./ -name "test.pl"`
all:
echo all
.PHONY: test
test:
$(foreach filename, $(TEST_FILES), $( echo $(filename)))
2012/11/19(月) 19:01:43.87
GNU makeは人間が書くためのツールじゃないと思う。
test:
find . -name test.pl -exec sh -cx "perl {}" \;
test:
find . -name test.pl -exec sh -cx "perl {}" \;
173名無しさん@お腹いっぱい。
2013/02/08(金) 14:12:54.85 make の ワイルドカード( * ) の使い道について教えていただけませんか。
パターンの、% を使えば同じことができるように思いますし、
そもそも、ワイルドカードは、すでにファイル(オブジェクト)として存在するものにしかマッチしないようなので、
ファイル(オブジェクト)を新規作成しないで、アップデートするためにしかルールを使いたくないという
特殊な場合でしか、意味がないような気がします。。
自分でも、自分の理解が変なような気がするのですが、
どなたか教えてください。
よろしくお願いします。
パターンの、% を使えば同じことができるように思いますし、
そもそも、ワイルドカードは、すでにファイル(オブジェクト)として存在するものにしかマッチしないようなので、
ファイル(オブジェクト)を新規作成しないで、アップデートするためにしかルールを使いたくないという
特殊な場合でしか、意味がないような気がします。。
自分でも、自分の理解が変なような気がするのですが、
どなたか教えてください。
よろしくお願いします。
174名無しさん@お腹いっぱい。
2013/04/20(土) 01:31:47.01 教えて下さい。
下記のように引数 10 を Makefile 内で、更に引数として渡してやりたいのですが
どの様にすればよいのでしょうか?
$ make hoge 10
にて
hoge:
/PATH/TO/foo.sh 10
と渡るようにしたい。
Makefile 内にて
ARG = $(shell read -p "ARG = " arg; echo $(arg))
hoge:
/PATH/TO/foo.sh $(ARG)
などしてみたのですが上手くできませんでした。
下記のように引数 10 を Makefile 内で、更に引数として渡してやりたいのですが
どの様にすればよいのでしょうか?
$ make hoge 10
にて
hoge:
/PATH/TO/foo.sh 10
と渡るようにしたい。
Makefile 内にて
ARG = $(shell read -p "ARG = " arg; echo $(arg))
hoge:
/PATH/TO/foo.sh $(ARG)
などしてみたのですが上手くできませんでした。
2013/04/20(土) 05:46:30.94
無理。というかmakeの使い方間違ってる。
2013/04/20(土) 07:33:37.61
>>175
ありがとうございます。
ご指摘がヒントになり、解決できました。
shell スクリプト内で read することで対応できました。
ARG=`read -p "ARG= " arg; echo $arg`
echo $ARG
↑こんな感じで。
ありがとうございます。
ご指摘がヒントになり、解決できました。
shell スクリプト内で read することで対応できました。
ARG=`read -p "ARG= " arg; echo $arg`
echo $ARG
↑こんな感じで。
レスを投稿する
