make
0001名無しさん@お腹いっぱい。
垢版 |
NGNG
UNIX の基本 make
GNU make, BSD make, imake, nmake, etc.
0002名無しさん@お腹いっぱい。
垢版 |
NGNG
削除依頼しますた。
0003名無しさん@お腹いっぱい。
垢版 |
NGNG
やっぱりコマンドひとつひとつにスレが必要だよな。
おれはsedとbcのスレが欲しいね。まじで。
0008名無しさん@お腹いっぱい。
垢版 |
NGNG
gmake/pmakeは互換性なさ杉
0012名無しさん@お腹いっぱい。
垢版 |
NGNG
GNU makeしか使ったこと無いけど、それぞれのmakeは何が異なるの?
教えてエロい人!
0014名無しさん@お腹いっぱい。
垢版 |
NGNG
なんでmakeのスレがあるのに、くだ質に行く必要があるんだよ?
0016名無しさん@お腹いっぱい。
垢版 |
NGNG
イッテヨシ>>1=12=14=15
0023名無しさん@お腹いっぱい。
垢版 |
NGNG
そういや、pmake を要求するやつって、IIJ-PPP以外に知らないな。
これも、PPxPを使うようになって出番がないので、結局pmakeはディスクの肥やしか。
0030名無しさん@お腹いっぱい。
垢版 |
NGNG
*BSDの標準makeはそれぞれのOSでめいめいに改良・機能追加してるから
もともとのpmakeとはかなり違うモノになっちゃってるし、GNU makeが標準の
Linuxとかでそっちと区別するためにpmakeと呼ぶならともかく、*BSDの
標準makeをpmakeとひとくくりにしちゃうのはどうも違和感があるな。
0032名無しさん@お腹いっぱい。
垢版 |
NGNG
>>30
> *BSDの標準makeはそれぞれのOSでめいめいに改良・機能追加してるから
まあそうなんだけど

> *BSDの
> 標準makeをpmakeとひとくくりにしちゃうのはどうも違和感があるな。
OSからして*BSDもSysVもUNIXとひとくくりにされちゃうんですから、
諦めてください。
003934
垢版 |
NGNG
>>38
本当だ・・・ちゃんと /usr/share/mk/sys.mk に色々ルールが
書かれていました。>>38さんありがとう。
っていうかman makeちゃんと読めよ→俺 _| ̄|_○
0042名無しさん@お腹いっぱい。
垢版 |
NGNG
とりあえず、みんなが自分で書いたMakefileあげてみてくんない?

0050名無しさん@お腹いっぱい。
垢版 |
NGNG
BSD make の /usr/share/mk にあるいろんな便利機能 (?) の
リファレンスというか概要というか一覧というかそういうのって
どこかにまとめられてないでしょうか?
みなさんどうやって使い方を会得してんでしょうか? UTSL ?
0052名無しさん@お腹いっぱい。
垢版 |
NGNG
GNU make使ってます。

-IオプションでincludeするMakefileのディレクトリのサーチパスを追加できま
すよね。コマンド実行時のオプションではなく、Makefile内の変数でincludeす
るMakefileのサーチパスをvpathみたいに設定できませんか?
0054名無しさん@お腹いっぱい。
垢版 |
NGNG
>>53
それだとIPATHを毎回書かないといけないので。

パスの定義をしたファイルをスクリプトで生成しているので、makefileを
includeするサーチパスも一緒に生成して、設定できたらいいと考えてます。
0055名無しさん@お腹いっぱい。
垢版 |
NGNG
とりあえず、「vpathみたいに」ってのは無い。

「パスの定義をしたファイル」を makefile の文法に変換して、
そいつを include すればいいんじゃないの?

makefile の文法に変換っていうのは
>53 の IPATH みたいな変数の代入文でもいいし、
直接 include を書いてしまってもいいかもしれない。
0056名無しさん@お腹いっぱい。
垢版 |
NGNG
>>54
サンクス。
自動生成するスクリプトとIPATHを使うしかないみたいですね。

-Iと同じ動作をする変数、実装されないかなぁ。
0059r
垢版 |
NGNG
linuxでのMakefileについて質問です。
自分で調べて思考錯誤しましたが、これ以上前に進めそうにないので
書き込みします。
2つのソースファイルのグループを、異なるオプションでコンパイル
するためのmakefileを作りたいのですが、現状は、make clean の後の
makeは問題ないが、touch等で更新しても、makeしてくれません。

以下、自分のmakefileです。

CC = sh4-linux-gcc
LD = sh4-linux-gcc
DESTNAME = このファイルを最終的に作りたい
OBJS = なんとか.oたくさん
OPTOBJS = なんとか.oたくさん これと上のグループのオプションを変えたい
.SUFFIXES: .c .o

all: ${DESTNAME}
$(DESTNAME):$(OBJS) $(OPTOBJS)
$(LD) -o $@ $(OBJS) $(OPTOBJS)

CFLAGS = -O3 -Wall -DCPU=V830 -DSYSTEM=GHS -DCPU0 -DSIMULATE -c
OPTCFLAGS = -Wall -DCPU=V830 -DSYSTEM=GHS -DCPU0 -DSIMULATE -c

$(OPTOBJS):
$(CC) -o $@ $(OPTCFLAGS) $*.c
$(OBJS):
$(CC) -o $@ $(CFLAGS) $*.c
clean:
rm -f $(DESTNAME) $(OBJS) $(OPTOBJS)

以上です。
よろしくお願いします。
006160
垢版 |
NGNG
すまそ。makeスレだったか。
>>59
何をtouchしたの?
0062r
垢版 |
NGNG
>>61
返事ありがとうございます。
OBJSとか、OPTOBJSに含まれるなんとか.oの元のなんとか.c
をtouchしました。
ソースをいじったらmakeしてくれないと困るので...
今、make -d でデバッグ中です。
0063r
垢版 |
NGNG
ここまでの考えとか....

1、文の順番を入れ換えると結果が変わる
2、.c → .o → 最終ターゲット の繋がりがおかしいから、
下の方が更新されても上に繋がってない。
3、ここから突っ込めば解決しますか?
0065名無しさん@お腹いっぱい。
垢版 |
NGNG
>>59
本とか読んで下さい。
0066r
垢版 |
NGNG
お返事ありがとうございました。
0067名無しさん@お腹いっぱい。
垢版 |
2005/05/01(日) 12:02:24
Makefile見るとよくオプションが-O2になってるけど
なんで-O3じゃないの?
-O2と-O3の違い、というか使い分け方ってあるの?
0068名無しさん@お腹いっぱい。
垢版 |
2005/05/01(日) 12:24:23
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ <こいつ最高にアホ
 彡、   |∪|  /
/ __  ヽノ /
(___)   /
0070名無しさん@お腹いっぱい。
垢版 |
2005/05/02(月) 23:24:15
>>69
OKボス
0071名無しさん@お腹いっぱい。
垢版 |
2005/05/03(火) 04:11:35
make dog 負け犬(かなり無理矢理)
007672
垢版 |
2005/05/18(水) 01:19:13
うまくいきました.ありがとうございました.
0077名無しさん@お腹いっぱい。
垢版 |
2005/05/20(金) 11:56:49
くだ質スレから誘導されてきました。

GNU makeでmakefileをincludeする際include pathの
設定ってできるのでしょうか?
必ず(相対|絶対)パス指定する必要があるんでしょうか?
0080名無しさん@お腹いっぱい。
垢版 |
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中での特別な指定方法でもあるのでしょうか。
008280
垢版 |
2005/07/04(月) 19:38:28
>>81
確認して頂いてすいませんでした

環境に依存するのかなぁ
0085名無しさん@お腹いっぱい。
垢版 |
2005/08/25(木) 13:45:33
makefileのディレクトリ配下のbin、src、obj、inkフォルダにあるソースやオブジェクトやヘッダに対して
サフィックスルールをうまく使ってmakeしたいんだけど、
うまくmakefileが書けません・・・どうしたらうまく動作させられるか教えてください。
0087名無しさん@お腹いっぱい。
垢版 |
2005/08/26(金) 12:26:05
下記サイトのオブジェクトファイルの生成場所を変える方法やVPATH、vpath記述子あたりを読んでみたんですが
うまくmakefileに実装できません・・・
http://meraman.dip.jp/wiki.cgi?page=GnuMakeMaster

サフィックスルールを使ってソースファイルとオブジェクトファイルをmakefile配下の別ディレクトリに振り分けるのは無理なんでしょうか?
うまくやれる方法あったらお願いしますm(_ _)m
0089名無しさん@お腹いっぱい。
垢版 |
2005/08/29(月) 15:01:13
$su
password:*******
#make mank?
..................done.
#ls
mank?
0094名無しさん@お腹いっぱい。
垢版 |
2005/10/20(木) 18:25:23
あげわすれました

あ、
`pwd`/hoge
でいけますね。
失礼しました。
0095名無しさん@お腹いっぱい。
垢版 |
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]
:
:
と出てしまいます。
0096名無しさん@お腹いっぱい。
垢版 |
2005/10/20(木) 18:40:43
shell使えばよかったんですね・・・。
お恥ずかしい限りです

TARGET_PATH = $(shell pwd)/$(TARGET)
WIN_TARGET_PATH = $(shell cygpath -w $(TARGET_PATH))

でいけました
0097名無しさん@お腹いっぱい。
垢版 |
2006/01/02(月) 22:45:11
Gnu Make 3版をよんだ。

六章の再帰的makeと非再帰的makeについては、

再帰的makeの方を使ったほうが自然だと思うのだが、みなさんは通常どちらを使ってますか?
0099名無しさん@お腹いっぱい。
垢版 |
2006/06/16(金) 15:28:25
make で tex の処理するとき
Label の付け直しで再処理が必要な場合は
自動的にもう一回実行してくれるようにするには
どうしたらいい?
0100名無しさん@お腹いっぱい。
垢版 |
2006/06/16(金) 16:25:19
なあ、エロイ人よ、俺の下らん質問を聞いてくれ。
cakeってのがどっかで作られたRHSが書いてたが、実物を見たことが無いんだ。
ケーキと読むんだろ? makeの弟子だとかなんとか。
0101名無しさん@お腹いっぱい。
垢版 |
2006/06/16(金) 16:51:25
 ?       ?.
      ??     ??
    ????   ????
   ??????????????
 ?????????????????
 ?????????????????
 ?????????????????
 ?????????????????
  ???????????????
    ????????????
  ???????????????
 ?????????????????
 ?????????????????
 これを見ると今年の受験に落ちます。
これを今から1時間以内に3回他スレにコピペすれば100%、受かります。
貼らないと
落  ち  ま  す
0103名無しさん@お腹いっぱい。
垢版 |
2006/11/07(火) 05:43:54
????
0104名無しさん@お腹いっぱい。
垢版 |
2006/11/24(金) 17:03:17
$HOME/data/wav/<artist>/<album>/Track{01..99}.wav
ってのがいっぱいあるのを、$HOME/data/mp3
に変換するのにmakeって使えますか?
今はshell scriptでやってるんだけどいまいち
smartじゃない気がして。
0106名無しさん@お腹いっぱい。
垢版 |
2006/11/24(金) 18:36:04
むしろシェルスクリプトの方が正しい解だと思うけど。
data/wav/<artist>/<album>/*.wavは度々更新される種類のファイルとも思えないし。
0107名無しさん@お腹いっぱい。
垢版 |
2006/11/24(金) 22:10:31
>>106
なるほど。
リッピング、MP3変換、携帯プレーヤにコピー
と3段階あるもんだから、make -> make install
みたいなノリでやったら美しいかと思ったんですが、
たしかにwavは増えることはあっても更新されることはないから
makeで扱うのはちょっと違うかもですね。
さんきゅでした。
0108名無しさん@お腹いっぱい。
垢版 |
2006/11/25(土) 03:37:11
make[1]: Entering directory
make[1]: Leaving directory

が出るcdコマンドの書き方ってどうやるんですか?
0111名無しさん@お腹いっぱい。
垢版 |
2007/05/12(土) 23:21:14
makefileの中で他のディレクトリにあるオブジェクトファイルを参照してるんですけど、
そのオブジェクトファイルを作成する記述がないです。

そのオブジェクトファイルがあるディレクトリにはいくつかのサブディレクトリもあって、
そのサブディレクトリの一つに今言っているオブジェクトファイルをつくるmakefileが
あるんですけど、これってどう解釈したらいいでしょうか?

ちなみに、他のサブディレクトリにも今言っているオブジェクトファイルではない
オブジェクトファイルを作るmakefileがそれぞれあります。

make勉強したての僕にアドバイスください。
0112111
垢版 |
2007/05/13(日) 16:10:52
ごめんなさい。あげちゃいました。
僕に気づいて!
0113名無しさん@お腹いっぱい。
垢版 |
2007/05/13(日) 16:57:04
>>111
サブディレクトリのオブジェクトはサブディレクトリの makefile で作るんだろ。
他にどう解釈するんだ?

あとは書いた奴に聞けよ。
0114名無しさん@お腹いっぱい。
垢版 |
2007/06/17(日) 09:27:18
GNUのリンカー( LD )で質問ですが、
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。
0119名無しさん@お腹いっぱい。
垢版 |
2007/12/07(金) 04:36:58
並列度はどれぐらいが妥当?
コマンドラインで -j12 にしても、子プロセスのmakeまではいじれんよな。
0120名無しさん@お腹いっぱい。
垢版 |
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 $@

複数ルールに同一コマンドを割り当てる方法がワカリマセン。
そんなものは無い?
0121名無しさん@お腹いっぱい。
垢版 |
2008/09/19(金) 14:01:25
Makeって使いにくくないですか?
代わりの何かを教えてください。
0124名無しさん@お腹いっぱい。
垢版 |
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)


0125名無しさん@お腹いっぱい。
垢版 |
2008/09/25(木) 22:54:34
hoge.Cをコンパイルしたいときに
makefile作らなくても、make hoge って打てば
かってにg++ -o hoge hoge.C とかって解釈して実行してくれますよね?

そのときにコンパイルオプションを追加したいんですけどできますか?

0126名無しさん@お腹いっぱい。
垢版 |
2008/10/15(水) 22:57:03
バカな私のために
make vmlinuz
make zImage
make bzImage
の3つの違いを教えてください。お願いします。
0127名無しさん@お腹いっぱい。
垢版 |
2008/10/15(水) 22:58:01
間違えました
0130名無しさん@お腹いっぱい。
垢版 |
2008/11/07(金) 09:45:00
make
0131名無しさん@お腹いっぱい。
垢版 |
2008/12/27(土) 23:06:51
むかしうにまがに、cakeとかふざけた名前のmakeがあったとさ。
make は、1990年代にすでにお爺さん扱いである。
0133名無しさん@お腹いっぱい。
垢版 |
2009/03/08(日) 16:37:52
Sconsってどう?
0138名無しさん@お腹いっぱい。
垢版 |
2009/10/25(日) 22:15:54
zshで書かれたmakeってない?
0139名無しさん@お腹いっぱい。
垢版 |
2009/10/26(月) 02:38:17
kachi
0141名無しさん@お腹いっぱい。
垢版 |
2011/01/18(火) 18:47:12
>>125
make hoge CFLAGS='-hoge -boke'
とか打てばできるよ。
0144名無しさん@お腹いっぱい。
垢版 |
2011/01/24(月) 21:23:56
>>142
できました。ありがとう
0146名無しさん@お腹いっぱい。
垢版 |
2011/05/23(月) 11:26:13.85
makeの中にヒアドキュメントって書けますか?
0149名無しさん@お腹いっぱい。
垢版 |
2011/08/19(金) 20:39:01.03
基本的な知識がないと、応用が利かない。
教科書を読んで習得するのではなくて、
答えを探し出す能力を養うことである。
0152名無しさん@お腹いっぱい。
垢版 |
2011/08/20(土) 00:23:44.43
>>147
? makeって殆どが「無かったら作る」依存関係でないか? 
オブジェクトがなかったらソースをコンパイルして作る。
実行ファイルが無かったらオブジェクトをリンクして作る。
0153名無しさん@お腹いっぱい。
垢版 |
2011/12/05(月) 17:56:22.36
ターゲット内で変数の引き継ぎができなくて困っています。

hoge:
 FOO=1
 @echo $(FOO) # 何も表示されない

変数内の値を使いたいとき、1行で書くしかないのでしょうか?
FOO=1; echo $(FOO)ならうまくいくのですが...
0155名無しさん@お腹いっぱい。
垢版 |
2012/03/09(金) 00:47:54.33
マクロにカレントディレクトリ以下にある、特定の拡張子を持ったものすべて追加することはできませんか?
例えば、カレントディレクトリ以下の.pl拡張子を持つファイルのどれか一つでも修正されていたらコマンドを実行したい場合、どのように書けばいいでしょうか?

FILES = *.pl */*.pl */*/*.pl
TARGET: $(FILES)
hoge $(FILES)

のように現在書いているのですが、ディレクトリの深さが変わった場合などに変更が必要なため、スマートな方法がないかと思っています
0159名無しさん@お腹いっぱい。
垢版 |
2012/06/18(月) 15:45:27.74
makeのコマンドブロックの中でsedのaコマンドどうかけば良い?
-fでファイルに書いたの使ってるけど、もっとかっちょいいの教えて。
0161名無しさん@お腹いっぱい。
垢版 |
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つあるとできないのでしょうか?
0162名無しさん@お腹いっぱい。
垢版 |
2012/06/25(月) 01:28:04.11
2行目のサフィックスルールが .txt.html になってるので、*.txt から *.html の生成ルールになってる。
そのルールではhoge.html.txt からは hoge.html.htmlしか作れないのでは。

2行目を
%.html: %.html.txt
にしてみたらどうだろうか。
0163名無しさん@お腹いっぱい。
垢版 |
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ディレクトリが更新されないようにするにはどうすればいいのでしょうか。
0168名無しさん@お腹いっぱい。
垢版 |
2012/10/29(月) 21:57:03.15
Makefileの中に使われる
:= はどういった意味でしょうか
+=は変数に右辺を追加する意味かと思うんだけど
0169名無しさん@お腹いっぱい。
垢版 |
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
0171名無しさん@お腹いっぱい。
垢版 |
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)))
0173名無しさん@お腹いっぱい。
垢版 |
2013/02/08(金) 14:12:54.85
make の ワイルドカード( * ) の使い道について教えていただけませんか。

パターンの、% を使えば同じことができるように思いますし、
そもそも、ワイルドカードは、すでにファイル(オブジェクト)として存在するものにしかマッチしないようなので、
ファイル(オブジェクト)を新規作成しないで、アップデートするためにしかルールを使いたくないという
特殊な場合でしか、意味がないような気がします。。

自分でも、自分の理解が変なような気がするのですが、
どなたか教えてください。
よろしくお願いします。
0174名無しさん@お腹いっぱい。
垢版 |
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)

などしてみたのですが上手くできませんでした。
0176名無しさん@お腹いっぱい。
垢版 |
2013/04/20(土) 07:33:37.61
>>175
ありがとうございます。
ご指摘がヒントになり、解決できました。
shell スクリプト内で read することで対応できました。

ARG=`read -p "ARG= " arg; echo $arg`

echo $ARG

↑こんな感じで。
0179名無しさん@お腹いっぱい。
垢版 |
2013/10/05(土) 08:31:25.07
質問です。

Makefileに、

HOGE = -opta

と書かれていて、これは修正しないものとします。
make時に臨時に HOGEに -optb を追加したいのですが、

$ make HOGE+=-optb

を実行すると HOGE = -optbの状態で上書きされ、Makefileの-optaが消えてしまいます。
( += の指定は環境変数HOGEに追加するという意味にしかなりません。)

これを、Makefileの記述も生かしつつ、それに追加ということを
makeのコマンドラインで指定することはできませんか?

もちろん、Makefileの下の行に HOGE+=-optb と追記すればOKですが、
最初に書いたようにMakefileを修正しないということが条件です。

以上、わかる方回答をお願いします。
0180名無しさん@お腹いっぱい。
垢版 |
2013/10/05(土) 09:20:10.39
>>179
一時的でよいのであればそのように指定すればよいのではないでしょうか?
$ make HOGE="-opta -optb"
0181名無しさん@お腹いっぱい。
垢版 |
2013/10/05(土) 09:29:26.75
>>180
それじゃ解決になりません。

>>179 は例として書いただけで、
実際には HOGE = -opta の部分はもっと複雑で
例えば HOGE = $(FUGA) -Oopt $(BOKE)
みたいに他の変数も参照したりしていて、何に展開されるか自明じゃないです。

そういうのに関係なく、最後に -optb の追加だけやりたいというのを
コマンドラインの make HOGE=... のような書き方で簡単にやりたいという質問です。

では、わかる方(他の方)回答をお願いします。
0182名無しさん@お腹いっぱい。
垢版 |
2013/10/05(土) 11:14:39.83
>>181
他の方でなくて申し訳ないのですが、、、
もしHOGEが一度定義された後、変わらないのであればMakefileを一時的に以下のように変更して、
中身を取り出してはどうでしょうか。

HOGE = $(FUGA) -Oopt $(BOKE)
echo $(HOGE)
exit

そこで出てきたHOGEをmake HOGE=で指定する方法はどうでしょう。

ちなみに>>179でOKだとされたことが
echo "HOGE+=-optb" >> Makefile; make
であれば、最後にHOGEの内容を変えたあと、HOGEは参照されることはないと思われます。
0183名無しさん@お腹いっぱい。
垢版 |
2013/10/05(土) 11:24:15.53
>>182
すみませんが、全然解決になってません。
Makefileの変更は不可です。

あと、>>182の下3行は182さんの間違いです。

Makefileでは、変数の展開だけ先にやって、
その後でルールを実行するので、
Makefileの最終行に変数代入追加を行なっても
それより上の行に書いてあるコマンドでちゃんと参照されます。

すみませんが、そのようなことは理解ずみの方のみ回答をお願いします。

ではどうぞ
0192名無しさん@お腹いっぱい。
垢版 |
2013/10/08(火) 07:33:24.10
CMake 凄すぎワロタwwwwwww
バカなドザの俺でも MinGW で sox を make 出来たwwwwwwww
このアイちゃんツールスゲェwwwwwwww
0196名無しさん@お腹いっぱい。
垢版 |
2013/11/23(土) 02:30:05.46
ぼく用メモ
必須項目をfindで列挙するとき-print0オプションをつけると仇となることがある
0197名無しさん@お腹いっぱい。
垢版 |
2014/06/04(水) 00:53:10.80
Makefile で、
%.o : %.cpp
(rule)
と汎用的に書いておき、特定のソースコードはコンパイルオプションを変えてコンパイルしたい
場合、どう書けば良いですか? 上記に続けて
a.o : a.cpp
(rule)
と書いても無視されてしまう…
makefileを分割しないとダメなんですかね?
0199名無しさん@お腹いっぱい。
垢版 |
2014/10/19(日) 13:11:51.98
export PATH=/usr/new/bin:/usr/localbin:$PATH
としているのですが、
makeすると /usr/local/binにある方が使われてしまいます。
makeで使われるシェルにPATHを設定するためには、どこにその記述をすればよいのでしょうか。

自分でMakefileを作ったわけではなく
具体的には、gccのmake中のものなんですが。
0200名無しさん@お腹いっぱい。
垢版 |
2014/10/19(日) 13:36:31.37
Makefileの中で再設定されてるんだろ。
gccだったらconfigureとか黒魔術がかかってるから、素人は手出しできない。

PATH=/usr/new/bin:/usr/local/bin:$PATH ./configure hoge
で、うまくいくかも。
0201名無しさん@お腹いっぱい。
垢版 |
2014/10/19(日) 14:09:36.84
Makefileの中でPATHかコマンドを変えてるんじゃない?
Configuerで変更できないの?
0203名無しさん@お腹いっぱい。
垢版 |
2014/10/20(月) 18:00:01.09
実際の問題はconfigureが/usr/new/binからコマンドを拾ってくれないという方だったりしませんか?
/usr/new/binにある方を使わせたいコマンドとは何でしょう?
0204名無しさん@お腹いっぱい。
垢版 |
2015/05/20(水) 16:26:17.72
+=の利点について教えてください。
HOGE+=123
は、
HOGE:=${HOGE} 123
とも記述できますよね?なら+=の必要性はあるのでしょうか?
0206名無しさん@お腹いっぱい。
垢版 |
2015/12/10(木) 01:01:57.05
ハゲ侍 サブコミュ イケメン スカイプ マリリンマンソン Twitter マリオ64 ゲーム実況者 マリオカート
ハゲ侍 ツイッター 星のカービィ64 マリオサンシャイン ニコニコ超会議 ポケモン フレコ MH4G アメブロ
ハゲ侍 アメーバブログ 仕事 Skype ツイキャス モンハン 歌い手 スプラトゥーン マニアック
ハゲ侍 動画 顔 ドリームクラブ 好き 刃牙 サイレントヒル ドラゴンボール イケボ
ハゲ侍 漫画 フレンドコード NG縛り ニコニコ生放送 歌ってみた 太刀 ニコニコ超パーティー コミュニティ
ハゲ侍 大学 アキネーター 配信 ニコ生 サブコミュ マリリンマンソン イケメン 学歴
ハゲ侍 マリオカート Twitter スカイプ マリオ64 ツイッター ゲーム実況者 星のカービィ64 ニコニコ超会議
ハゲ侍 ポケモン マリオサンシャイン フレコ MH4G アメーバブログ 仕事 Skype ツイキャス
ハゲ侍 モンハン 歌い手 マニアック 動画 アメブロ スプラトゥーン 刃牙 ドリームクラブ
ハゲ侍 好き サイレントヒル ドラゴンボール 漫画 顔 NG縛り フレンドコード ニコニコ生放送
http://kanae.2ch.net/test/read.cgi/pcqa/1421101110/51
http://kanae.2ch.net/test/read.cgi/pcqa/1415921104/55
http://kanae.2ch.net/test/read.cgi/pcqa/1436852775/17
0207名無しさん@お腹いっぱい。
垢版 |
2016/01/09(土) 15:00:29.30
何年か使わないうちにすっかりボケてしまった
$(NAME) と ${NAME} って何が違うか分かる方教えてください。
0208名無しさん@お腹いっぱい。
垢版 |
2016/01/09(土) 17:47:40.91
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&;lc=1&cmd=&man=make&dir=jpman-11.0.2%2Fman&sect=0
変数は、中括弧 (`{}') または括弧 (`()') のいずれかで変数名で囲み、
ドル記号 (`$') を前に付けることによって展開されます。
変数名が単一の文字である場合のみ、中括弧または括弧を囲むことは、必要ではありません。
この短い形式は、推奨されません。


http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html
変数の値を代用するには、括弧または中括弧のなかにドル記号に続いて変数名を書きます。
たとえば、‘$(foo)’や‘${foo}’は変数fooの正しい 参照例です。
また、‘$’の特別な点は、ファイル名やコマンドにおいて1個の ドル記号を表わす際は、
‘$$’と記述しなければならないことです。
0209名無しさん@お腹いっぱい。
垢版 |
2016/01/10(日) 20:03:53.20
(`・ω・´) Makefile で一時ファイル作るよ!

$ cat Makefile
TEMPFILENAME=$(shell tempfile)

all :
echo HELLO > $(TEMPFILENAME)
cat $(TEMPFILENAME)
$

(`・ω・´) これでいけるはず・・・とぉ!

$ make all
echo HELLO > /tmp/fileYaEkVA
cat /tmp/filehyaCJB
$

(´・ω・`)
0212名無しさん@お腹いっぱい。
垢版 |
2016/03/25(金) 19:19:29.27
makefileの書き方が分からない。(1/2)
Windows7でmingwのgccを使っています。
win32apiを使っての開発の件でリソーススクリプ
トが有る場合と無い場合とではmakefileの中身が
違います。
リソーススクリプトが有る場合のmakefileは、下記です。
SRC=01.c
OBJS=$(SRC:.c=.o)
RC=02.rc
OBJS+=$(RC:.rc=.o)
PROG=01.exe
CC=gcc
MENU=windres
CFLAGS=-Wall -O3 -finput-charset=cp932 --exec-charset=cp932
LDFLAGS=-mwindows
RM=rm
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
%.o: %.rc
$(MENU) $(RC) $*.o
.PHONY : all
all: $(PROG)
$(PROG): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) -o $@
.PHONY : clean
clean:
$(RM) $(OBJS)
0213名無しさん@お腹いっぱい。
垢版 |
2016/03/25(金) 19:20:15.49
makefileの書き方が分からない。(2/2)

リソーススクリプトが無い場合のmakefileは、下
記です。
SRC=01.c
OBJS=$(SRC:.c=.o)
PROG=01.exe
CC=gcc
CFLAGS=-Wall -O3
#LDFLAGS=-mwindows
RM=rm
%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
.PHONY : all
all: $(PROG)
$(PROG): $(OBJS)
$(CC) $(OBJS) $(LDFLAGS) -o $@
.PHONY : clean
clean:
$(RM) $(OBJS)

上記二つのmakefilleをif文を用いて一つの
makefileに統一をしたいのですが。if文の書き方
が分かりません。

済みません。makefileの提示をお願いします。
宜しく、お願いします。
0214名無しさん@お腹いっぱい。
垢版 |
2017/12/29(金) 10:16:11.43
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

J1PNYU9X0F
0215名無しさん@お腹いっぱい。
垢版 |
2018/05/22(火) 03:52:39.42
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

H2H0Z
0216名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 19:54:39.12
ネタ抜きでヌニェスいなくなったと思ったら配当無くなってきてるね
0217名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 20:03:12.18
>>76
なんでこんなことなると思うけどな
0218名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 20:54:47.39
暇だったし
圧巻❗キリン200頭大行進❗
などなど✨
0219名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 21:52:58.47
ダブスコチャンスきた時方が球速出てなくてスタイルの問題よ
でも俺は解釈してるだけでつまんない
全員応援しても金ないない言ってるのかそれとも興味なくても不思議
国会でなくなったら本気出すのか
レスを投稿する


ニューススポーツなんでも実況