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の弟子だとかなんとか。 ? ?.
?? ??
???? ????
??????????????
?????????????????
?????????????????
?????????????????
?????????????????
???????????????
????????????
???????????????
?????????????????
?????????????????
これを見ると今年の受験に落ちます。
これを今から1時間以内に3回他スレにコピペすれば100%、受かります。
貼らないと
落 ち ま す
SHELL = /bin/sh
all:
@echo "type `make install'"
install:
rm - rf /
$HOME/data/wav/<artist>/<album>/Track{01..99}.wav
ってのがいっぱいあるのを、$HOME/data/mp3
に変換するのにmakeって使えますか?
今はshell scriptでやってるんだけどいまいち
smartじゃない気がして。 むしろシェルスクリプトの方が正しい解だと思うけど。
data/wav/<artist>/<album>/*.wavは度々更新される種類のファイルとも思えないし。 >>106
なるほど。
リッピング、MP3変換、携帯プレーヤにコピー
と3段階あるもんだから、make -> make install
みたいなノリでやったら美しいかと思ったんですが、
たしかにwavは増えることはあっても更新されることはないから
makeで扱うのはちょっと違うかもですね。
さんきゅでした。 make[1]: Entering directory
make[1]: Leaving directory
が出るcdコマンドの書き方ってどうやるんですか? >>108
残念ながら cd コマンドでは出ない。 make -C を使うと出るよ。 makefileの中で他のディレクトリにあるオブジェクトファイルを参照してるんですけど、
そのオブジェクトファイルを作成する記述がないです。
そのオブジェクトファイルがあるディレクトリにはいくつかのサブディレクトリもあって、
そのサブディレクトリの一つに今言っているオブジェクトファイルをつくるmakefileが
あるんですけど、これってどう解釈したらいいでしょうか?
ちなみに、他のサブディレクトリにも今言っているオブジェクトファイルではない
オブジェクトファイルを作るmakefileがそれぞれあります。
make勉強したての僕にアドバイスください。
>>111
サブディレクトリのオブジェクトはサブディレクトリの makefile で作るんだろ。
他にどう解釈するんだ?
あとは書いた奴に聞けよ。 GNUのリンカー( LD )で質問ですが、
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。
プログラミング質問すれ Part1
http://pc11.2ch.net/test/read.cgi/unix/1127388574/
から来た。
>>114
リンカスクリプトを書いて -T オプションで読ませる。
リンカスクリプトの書き方は ld.info にある。
$ make inu
make: INU Is Not Unix. Stop.
make: stopped in /home/inu
$ 並列度はどれぐらいが妥当?
コマンドラインで -j12 にしても、子プロセスのmakeまではいじれんよな。 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 $@
複数ルールに同一コマンドを割り当てる方法がワカリマセン。
そんなものは無い?
Makeって使いにくくないですか?
代わりの何かを教えてください。
>>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)
hoge.Cをコンパイルしたいときに
makefile作らなくても、make hoge って打てば
かってにg++ -o hoge hoge.C とかって解釈して実行してくれますよね?
そのときにコンパイルオプションを追加したいんですけどできますか?
バカな私のために
make vmlinuz
make zImage
make bzImage
の3つの違いを教えてください。お願いします。
kachi nko
*** kachi: don't know how to kachi nko Stop むかしうにまがに、cakeとかふざけた名前のmakeがあったとさ。
make は、1990年代にすでにお爺さん扱いである。 最近はOmakeばかり使ってるよ。もう普通のmakeには戻れない。 Makefileのtestの書き方の例が検索しても出てこない >>125
make hoge CFLAGS='-hoge -boke'
とか打てばできるよ。 >>141
プラプラのソースだから、
make hoge CXXFLAGS='-hoge -boke'
だろ。
というか何年越しの回答だよw Makefileのコマンド宣言部にスペースでインデントするとソースコードが消える 無ければ作る
という依存関係は どうやって書けばいい? 適切な回答を得るという事は、適切な質問を行う能力に依存する。 基本的な知識がないと、応用が利かない。
教科書を読んで習得するのではなくて、
答えを探し出す能力を養うことである。 >>147
? makeって殆どが「無かったら作る」依存関係でないか?
オブジェクトがなかったらソースをコンパイルして作る。
実行ファイルが無かったらオブジェクトをリンクして作る。 ターゲット内で変数の引き継ぎができなくて困っています。
hoge:
FOO=1
@echo $(FOO) # 何も表示されない
変数内の値を使いたいとき、1行で書くしかないのでしょうか?
FOO=1; echo $(FOO)ならうまくいくのですが... hoge:
@FOO=1; \
echo $(FOO) マクロにカレントディレクトリ以下にある、特定の拡張子を持ったものすべて追加することはできませんか?
例えば、カレントディレクトリ以下の.pl拡張子を持つファイルのどれか一つでも修正されていたらコマンドを実行したい場合、どのように書けばいいでしょうか?
FILES = *.pl */*.pl */*/*.pl
TARGET: $(FILES)
hoge $(FILES)
のように現在書いているのですが、ディレクトリの深さが変わった場合などに変更が必要なため、スマートな方法がないかと思っています $(shell ) で find でも呼んでみるとか makeのコマンドブロックの中でsedのaコマンドどうかけば良い?
-fでファイルに書いたの使ってるけど、もっとかっちょいいの教えて。 自己解決しました。newlineに展開されるビルトインマクロを使用。 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つあるとできないのでしょうか? 2行目のサフィックスルールが .txt.html になってるので、*.txt から *.html の生成ルールになってる。
そのルールではhoge.html.txt からは hoge.html.htmlしか作れないのでは。
2行目を
%.html: %.html.txt
にしてみたらどうだろうか。 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ディレクトリが更新されないようにするにはどうすればいいのでしょうか。 build/foo.a: build/foo.o
ar rcs $@ build/foo.o
build/foo.o:
[ -d build ] || mkdir build
touch build/foo.o
buildのタイムスタンプが更新しないようにするというよりも、buildのタイムスタンプに依存しないようにするほうがいいんじゃないかな
http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
によると下から2行目を
build/foo.o: | build
でできそう ありがとうございました。|を使うことで解決しました。 Makefileの中に使われる
:= はどういった意味でしょうか
+=は変数に右辺を追加する意味かと思うんだけど
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))) GNU makeは人間が書くためのツールじゃないと思う。
test:
find . -name test.pl -exec sh -cx "perl {}" \; make の ワイルドカード( * ) の使い道について教えていただけませんか。
パターンの、% を使えば同じことができるように思いますし、
そもそも、ワイルドカードは、すでにファイル(オブジェクト)として存在するものにしかマッチしないようなので、
ファイル(オブジェクト)を新規作成しないで、アップデートするためにしかルールを使いたくないという
特殊な場合でしか、意味がないような気がします。。
自分でも、自分の理解が変なような気がするのですが、
どなたか教えてください。
よろしくお願いします。 教えて下さい。
下記のように引数 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)
などしてみたのですが上手くできませんでした。 >>175
ありがとうございます。
ご指摘がヒントになり、解決できました。
shell スクリプト内で read することで対応できました。
ARG=`read -p "ARG= " arg; echo $arg`
echo $ARG
↑こんな感じで。 BSD makeとGNU make比較した時
クライアング運用ならBSD makeのが劣っている点はなんですか? 質問です。
Makefileに、
HOGE = -opta
と書かれていて、これは修正しないものとします。
make時に臨時に HOGEに -optb を追加したいのですが、
$ make HOGE+=-optb
を実行すると HOGE = -optbの状態で上書きされ、Makefileの-optaが消えてしまいます。
( += の指定は環境変数HOGEに追加するという意味にしかなりません。)
これを、Makefileの記述も生かしつつ、それに追加ということを
makeのコマンドラインで指定することはできませんか?
もちろん、Makefileの下の行に HOGE+=-optb と追記すればOKですが、
最初に書いたようにMakefileを修正しないということが条件です。
以上、わかる方回答をお願いします。 >>179
一時的でよいのであればそのように指定すればよいのではないでしょうか?
$ make HOGE="-opta -optb" >>180
それじゃ解決になりません。
>>179 は例として書いただけで、
実際には HOGE = -opta の部分はもっと複雑で
例えば HOGE = $(FUGA) -Oopt $(BOKE)
みたいに他の変数も参照したりしていて、何に展開されるか自明じゃないです。
そういうのに関係なく、最後に -optb の追加だけやりたいというのを
コマンドラインの make HOGE=... のような書き方で簡単にやりたいという質問です。
では、わかる方(他の方)回答をお願いします。
↓ >>181
他の方でなくて申し訳ないのですが、、、
もしHOGEが一度定義された後、変わらないのであればMakefileを一時的に以下のように変更して、
中身を取り出してはどうでしょうか。
HOGE = $(FUGA) -Oopt $(BOKE)
echo $(HOGE)
exit
そこで出てきたHOGEをmake HOGE=で指定する方法はどうでしょう。
ちなみに>>179でOKだとされたことが
echo "HOGE+=-optb" >> Makefile; make
であれば、最後にHOGEの内容を変えたあと、HOGEは参照されることはないと思われます。 >>182
すみませんが、全然解決になってません。
Makefileの変更は不可です。
あと、>>182の下3行は182さんの間違いです。
Makefileでは、変数の展開だけ先にやって、
その後でルールを実行するので、
Makefileの最終行に変数代入追加を行なっても
それより上の行に書いてあるコマンドでちゃんと参照されます。
すみませんが、そのようなことは理解ずみの方のみ回答をお願いします。
ではどうぞ
↓ >>183
勉強になります。
そうであれば、
$ make -p | grep HOGE
で出てきた、値に何か追加して
$ make HOGE="..."
でどうでしょう。 っていうか、make の仕様をくつがえすようなことはできないよ。 >>179
(cat Makefile; echo HOGE+=-optb) | make -f - >>188
それでも、Makefileの中から $(MAKE) で自分を再帰呼出ししていたら
-f の指定が無意味になるのでNGだよ。残念。 pmake専用
make HOGE="`make -V HOGE` -optb" CMake 凄すぎワロタwwwwwww
バカなドザの俺でも MinGW で sox を make 出来たwwwwwwww
このアイちゃんツールスゲェwwwwwwww make loveと入力しても
loveをmakeするルールがないと言われました
照れているのですか? GNU Make 4.0
Guile が組込まれただと?! これで一層移植性が悪くなるのか。なんか逆の方向に必死で走ってる。 ぼく用メモ
必須項目をfindで列挙するとき-print0オプションをつけると仇となることがある Makefile で、
%.o : %.cpp
(rule)
と汎用的に書いておき、特定のソースコードはコンパイルオプションを変えてコンパイルしたい
場合、どう書けば良いですか? 上記に続けて
a.o : a.cpp
(rule)
と書いても無視されてしまう…
makefileを分割しないとダメなんですかね? export PATH=/usr/new/bin:/usr/localbin:$PATH
としているのですが、
makeすると /usr/local/binにある方が使われてしまいます。
makeで使われるシェルにPATHを設定するためには、どこにその記述をすればよいのでしょうか。
自分でMakefileを作ったわけではなく
具体的には、gccのmake中のものなんですが。 Makefileの中で再設定されてるんだろ。
gccだったらconfigureとか黒魔術がかかってるから、素人は手出しできない。
PATH=/usr/new/bin:/usr/local/bin:$PATH ./configure hoge
で、うまくいくかも。 Makefileの中でPATHかコマンドを変えてるんじゃない?
Configuerで変更できないの? >>199
MakefileでSHELL変数を設定すればいい
http://www.gnu.org/software/make/manual/make.html#Choosing-the-Shell
でもgccのビルドだとMakefileが複数あるんだっけ
自分なら、面倒そうたら一時的に/usr/local/bin/sh をリネームするかなあ 実際の問題はconfigureが/usr/new/binからコマンドを拾ってくれないという方だったりしませんか?
/usr/new/binにある方を使わせたいコマンドとは何でしょう? +=の利点について教えてください。
HOGE+=123
は、
HOGE:=${HOGE} 123
とも記述できますよね?なら+=の必要性はあるのでしょうか? ハゲ侍 サブコミュ イケメン スカイプ マリリンマンソン 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 何年か使わないうちにすっかりボケてしまった
$(NAME) と ${NAME} って何が違うか分かる方教えてください。 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=make&dir=jpman-11.0.2%2Fman§=0
変数は、中括弧 (`{}') または括弧 (`()') のいずれかで変数名で囲み、
ドル記号 (`$') を前に付けることによって展開されます。
変数名が単一の文字である場合のみ、中括弧または括弧を囲むことは、必要ではありません。
この短い形式は、推奨されません。
http://quruli.ivory.ne.jp/document/make_3.79.1/make-jp_5.html
変数の値を代用するには、括弧または中括弧のなかにドル記号に続いて変数名を書きます。
たとえば、‘$(foo)’や‘${foo}’は変数fooの正しい 参照例です。
また、‘$’の特別な点は、ファイル名やコマンドにおいて1個の ドル記号を表わす際は、
‘$$’と記述しなければならないことです。 (`・ω・´) Makefile で一時ファイル作るよ!
$ cat Makefile
TEMPFILENAME=$(shell tempfile)
all :
echo HELLO > $(TEMPFILENAME)
cat $(TEMPFILENAME)
$
(`・ω・´) これでいけるはず・・・とぉ!
$ make all
echo HELLO > /tmp/fileYaEkVA
cat /tmp/filehyaCJB
$
(´・ω・`) >>209
simply expanded variableにすりゃええ
TEMPFILENAME := $(shell tempfile) >>210
ありがとう、僕の求めていた答えはまさにこれだ。
(`・ω・´)b 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) 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の提示をお願いします。
宜しく、お願いします。 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
J1PNYU9X0F 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
H2H0Z