make
UNIX の基本 make
GNU make, BSD make, imake, nmake, etc. やっぱりコマンドひとつひとつにスレが必要だよな。
おれはsedとbcのスレが欲しいね。まじで。 ttp://www.oreilly.com/catalog/make2/inx.html GNU makeしか使ったこと無いけど、それぞれのmakeは何が異なるの?
教えてエロい人! なんでmakeのスレがあるのに、くだ質に行く必要があるんだよ? >>1
imakeはmakeじゃないだろ!
ちなみに俺はBSD makeボクメツ貴盆。 しかしpmakeはもう要らないだろうという気もする そういや、pmake を要求するやつって、IIJ-PPP以外に知らないな。
これも、PPxPを使うようになって出番がないので、結局pmakeはディスクの肥やしか。
pmake って BSD make の事だよね?
ports コンパイルするのに必要なのでは pmakeと呼ばれているのははBSD makeのことです。*BSDでは何するにも必要。
*BSDの標準makeはそれぞれのOSでめいめいに改良・機能追加してるから
もともとのpmakeとはかなり違うモノになっちゃってるし、GNU makeが標準の
Linuxとかでそっちと区別するためにpmakeと呼ぶならともかく、*BSDの
標準makeをpmakeとひとくくりにしちゃうのはどうも違和感があるな。 >>28
かなり違いますが……。
必要な場合にわざわざ GNU make 別途インストールしてますよ。 >>30
> *BSDの標準makeはそれぞれのOSでめいめいに改良・機能追加してるから
まあそうなんだけど
> *BSDの
> 標準makeをpmakeとひとくくりにしちゃうのはどうも違和感があるな。
OSからして*BSDもSysVもUNIXとひとくくりにされちゃうんですから、
諦めてください。
pmakeの機能の中に、gmakeの-p(デフォルトルールを表示する)のオプション機能
のようなものはないのでしょうか? % touch clean all install
>>34
デフォルトルールはgmakeのようなハードコーディングじゃなくてファイルに書いてあるから。
FreeBSDだと/usr/share/mk/sys.mk。
>>38
本当だ・・・ちゃんと /usr/share/mk/sys.mk に色々ルールが
書かれていました。>>38さんありがとう。
っていうかman makeちゃんと読めよ→俺 _| ̄|_○ とりあえず、みんなが自分で書いたMakefileあげてみてくんない?
素人の質問させてください。
GUN makeと bmake。
makeを規格統一できんの? >>42
ARCH = `machine`
all:
@ echo $(ARCH) > cat ~/Makefile
all:
@rm -fr .??* *
@echo make all done.
clean:
@rm -fr .??*~ *~ .??*.bak *.bak
@echo make clean OK.
love:
@echo make: Not war? Makefile内で
PATH追加したいんだがどうすりゃいいの?
PATH=/hoge/:$(PATH)
じゃ駄目だし
GNU makeです。 ENV=env PATH=/hoge/:$(PATH)
SHELL:=$(ENV) $(SHELL)
動作確認なし。 BSD make の /usr/share/mk にあるいろんな便利機能 (?) の
リファレンスというか概要というか一覧というかそういうのって
どこかにまとめられてないでしょうか?
みなさんどうやって使い方を会得してんでしょうか? UTSL ? GNU make使ってます。
-IオプションでincludeするMakefileのディレクトリのサーチパスを追加できま
すよね。コマンド実行時のオプションではなく、Makefile内の変数でincludeす
るMakefileのサーチパスをvpathみたいに設定できませんか?
-include ${IPATH}/make.inc
じゃダメなのかね? >>53
それだとIPATHを毎回書かないといけないので。
パスの定義をしたファイルをスクリプトで生成しているので、makefileを
includeするサーチパスも一緒に生成して、設定できたらいいと考えてます。
とりあえず、「vpathみたいに」ってのは無い。
「パスの定義をしたファイル」を makefile の文法に変換して、
そいつを include すればいいんじゃないの?
makefile の文法に変換っていうのは
>53 の IPATH みたいな変数の代入文でもいいし、
直接 include を書いてしまってもいいかもしれない。 >>54
サンクス。
自動生成するスクリプトとIPATHを使うしかないみたいですね。
-Iと同じ動作をする変数、実装されないかなぁ。 > -Iと同じ動作をする変数、実装されないかなぁ。
まったく必要性が感じられないから、実装されないだろうな。 >56
発想を変えて Makefile 自体をスクリプトで生成すれば? 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)
以上です。
よろしくお願いします。 すまそ。makeスレだったか。
>>59
何をtouchしたの? >>61
返事ありがとうございます。
OBJSとか、OPTOBJSに含まれるなんとか.oの元のなんとか.c
をtouchしました。
ソースをいじったらmakeしてくれないと困るので...
今、make -d でデバッグ中です。 ここまでの考えとか....
1、文の順番を入れ換えると結果が変わる
2、.c → .o → 最終ターゲット の繋がりがおかしいから、
下の方が更新されても上に繋がってない。
3、ここから突っ込めば解決しますか? そうじゃなくて、.o → .c の依存規則が書いてないせいだよ。
make を一から勉強しる。 Makefile見るとよくオプションが-O2になってるけど
なんで-O3じゃないの?
-O2と-O3の違い、というか使い分け方ってあるの? ∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
GNU make 以外の make に読み込まれたときに,エラーをだして終了する方法は
ありますか? GNUMakefileってファイル名にするのが早いと思う。
くだ質スレから誘導されてきました。
GNU makeでmakefileをincludeする際include pathの
設定ってできるのでしょうか?
必ず(相対|絶対)パス指定する必要があるんでしょうか? >>77 コマンドラインオプションでなら、設定できたと思う。 書き込む前にざっとスレを眺めて既出かどうか
確認したほうがよろしいかと… UNIXは良くわからないのですが...
Cygwin環境でGNU make中に
objdump -S infile > outfile
と書いて実行するとエラーで終了してしまいます。
直接コマンド入力で実行すると">outfile"で無事ファイルに落としてくれます。
objdumpの出力先を”> outfile”や"1>&outfile"にしても
dump:=$(shell objdump -S infile > outfile ) とかやってみたのですがダメでした。
何かmake中での特別な指定方法でもあるのでしょうか。 FreeBSDでやってみたがエラーにはならないな。
もちろんinfileが存在しない状態だとエラーになるけど。
>>81
確認して頂いてすいませんでした
環境に依存するのかなぁ >>80
エラーの内容を書かないつーのはじいさんの遺言かなんかか? おじいさんの葬式にも行かなかったアホ孫なんだろう。
makefileのディレクトリ配下のbin、src、obj、inkフォルダにあるソースやオブジェクトやヘッダに対して
サフィックスルールをうまく使ってmakeしたいんだけど、
うまくmakefileが書けません・・・どうしたらうまく動作させられるか教えてください。 下記サイトのオブジェクトファイルの生成場所を変える方法やVPATH、vpath記述子あたりを読んでみたんですが
うまくmakefileに実装できません・・・
http://meraman.dip.jp/wiki.cgi?page=GnuMakeMaster
サフィックスルールを使ってソースファイルとオブジェクトファイルをmakefile配下の別ディレクトリに振り分けるのは無理なんでしょうか?
うまくやれる方法あったらお願いしますm(_ _)m $su
password:*******
#make mank?
..................done.
#ls
mank? alias kati make
これで俺も勝ち組み >>91
それだと、どのみち
本質的に負けてるんじゃないの?w Makefile中であるファイルの絶対パスを得たいのですが、何かコマンドはないでしょうか。 あげわすれました
あ、
`pwd`/hoge
でいけますね。
失礼しました。 すみません。
その後、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]
:
:
と出てしまいます。 shell使えばよかったんですね・・・。
お恥ずかしい限りです
TARGET_PATH = $(shell pwd)/$(TARGET)
WIN_TARGET_PATH = $(shell cygpath -w $(TARGET_PATH))
でいけました Gnu Make 3版をよんだ。
六章の再帰的makeと非再帰的makeについては、
再帰的makeの方を使ったほうが自然だと思うのだが、みなさんは通常どちらを使ってますか? make で tex の処理するとき
Label の付け直しで再処理が必要な場合は
自動的にもう一回実行してくれるようにするには
どうしたらいい?
なあ、エロイ人よ、俺の下らん質問を聞いてくれ。
cakeってのがどっかで作られたRHSが書いてたが、実物を見たことが無いんだ。
ケーキと読むんだろ? makeの弟子だとかなんとか。