トップページ⇒tech
987コメント308KB

make makes many problems

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
難しいし方言きつすぎて別の種類の make には使えないし
日本語のまともな資料ないし・・・。

だれかもっと便利でわかりやすいビルドツール作ってくれって感じ?

参考リンク
http://tanaka-www.cs.titech.ac.jp/~euske/doc/make_qref.html
http://www.tk.airnet.ne.jp/nagae/jp/comp/make/makefile.html
http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/makefile.html
http://kanon.plala.jp/develop/makefile.html
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/make-intro/simplest.html
0937デフォルトの名無しさん2009/11/02(月) 19:30:31
>>933
よくやったwwww

pythonやらrubyやらのLL言語をやるともっと幸せになれると思うが。
0938デフォルトの名無しさん2009/11/03(火) 04:40:49
makeのコンパイル以外の便利な使い方を教えてください。
0939デフォルトの名無しさん2009/11/03(火) 05:32:32
makeはコンパイラじゃないが
0940デフォルトの名無しさん2009/11/03(火) 05:40:57
質問よく読め
0941デフォルトの名無しさん2009/11/03(火) 12:20:59
変換
時間因果関係依存ファイル操作
0942デフォルトの名無しさん2009/11/04(水) 13:48:32
複雑にtouchしないと解けないパズルを
makeで作ることも出来るかもしれんな
0943デフォルトの名無しさん2009/11/05(木) 02:48:15
   make
+ makes
+  many
= problems

覆面算をmakeで解いてください
0944デフォルトの名無しさん2009/11/05(木) 07:42:06
5桁以下の3数の足し算が8桁になるものか。
0945デフォルトの名無しさん2009/11/15(日) 00:33:08
wildcardでファイル名の一覧を取る時、下位フォルダの中のファイルもまとめて取る事ってできないでしょうか?

例えばカレントフォルダの中にhogeフォルダとfugaフォルダがあるとして、両フォルダの中のファイル名の一覧を取得しようと思うと
src = $(wildcard hoge/*.c) $(wildcard fuga/*.c)
のようにフォルダ毎にwildcardで取得する方法が思いつきますが、1回のwildcardで取得する方法はないでしょうか?
0946デフォルトの名無しさん2009/11/15(日) 05:03:41
>>945
GNU makeだっけ?
$(wildcard hoge/*.c fuga/*.c)
とかいう話?

infoによると {hoge,huga}/*.c は不可のようだが。
0947デフォルトの名無しさん2009/11/15(日) 06:13:34
$(wildcard */*.c)
0948デフォルトの名無しさん2009/11/17(火) 15:08:16
レス遅れてすみません。

>>946
フォルダを入力しないといけないのが面倒くさいんですよね。保守の面でも。

>>947
*を何回も使えるのは知りませんでした。
しかし、カレントフォルダの下位フォルダも含めて.cファイルを全部取ろうとすると
$(wildcard *.c */*.c */*/*.c */*/*/*.c)
のように階層の深さだけ書かないといけないのがちょっと不満です。
一発で綺麗に書く方法はないんでしょうか?
0949デフォルトの名無しさん2009/11/17(火) 15:28:29
shellでfind
0950デフォルトの名無しさん2009/11/17(火) 17:03:44
>>949
make自体の機能にはないんですね。
ありそうでないんだなぁ。
0951デフォルトの名無しさん2009/11/18(水) 11:38:22
>>950
考え方が逆。Unix系はいろんなツールを組み合わせて使うのが常道だから、外部ツールを使えばいいだけ。
0952デフォルトの名無しさん2009/11/21(土) 17:21:04
もともと有るもの全部コンパイル。という管理はmakeにはなじまない。
0953デフォルトの名無しさん2009/11/21(土) 21:27:24
もしかして $(shell ...) を知らないのか?
0954デフォルトの名無しさん2009/11/21(土) 21:37:55
>>949でがいしゅつ。
0955デフォルトの名無しさん2009/11/21(土) 22:12:43
それだと 950 や 952 の反応がおかしいと思ったんだ。
0956デフォルトの名無しさん2009/11/26(木) 10:08:53
たぶん初歩的なことだと思いますが

hoge.o: hogr.h

と書いてhoge.cppが変更された場合でもコンパイルされる理由がわかりません。
0957デフォルトの名無しさん2009/11/26(木) 10:16:53
>>956
いえ、コンパイルされませんよ
0958デフォルトの名無しさん2009/11/26(木) 10:25:38
.c.oの暗黙のルールがあるから。
.hの依存を無視するなら、Makefile無しでもコンパイルできる。

$ ls
hoge.c
$ make hoge.o
cc -O2 -pipe -std=gnu99 -fstack-protector -c hoge.c
0959デフォルトの名無しさん2009/11/26(木) 10:26:43
.c => .cppと読み替えてくれ。
0960デフォルトの名無しさん2009/11/26(木) 12:19:35
わかりやすい説明ありがとう
0961デフォルトの名無しさん2010/01/07(木) 05:26:19
Windowsのコマンドライン環境下で、もしIntelコンパイラがインストールされているならiclを
もしそうでないなら、clをつかうようにしたいのですが、Makefileはどのように書けばよいのでしょうか?
0962デフォルトの名無しさん2010/01/07(木) 10:00:41
環境変数CCにでも入れておいたらどうよ。
0963デフォルトの名無しさん2010/01/07(木) 11:07:56
nmake

!if [インテルコンパイラの存在確認] == 0
CC=icl
!else
CC=cl
!endif

!ifの条件式中でコマンドを[]で囲むとexit codeに置換される。
0964デフォルトの名無しさん2010/01/07(木) 11:20:20
>>963
早速の返信ありがとうございます。
インテルコンパイラの存在確認の部分がわからないのですが。
Windowsの場合どのように確認するのでしょうか?
0965デフォルトの名無しさん2010/01/07(木) 11:30:56
iclを実行してみてエラーを調べる。
iclがインストールされると設定されるであろう環境変数を調べるスクリプトを書く。
アプリケーションのインストール情報読むスクリプトを書く。
インストールディレクトリ決め打ちで存在確認するバッチファイルを書く。

好きなのをどうぞ。
0966デフォルトの名無しさん2010/01/07(木) 12:16:33
だからそれくらいならiccインストール時にCCをセットするだけでいいべさ。
0967デフォルトの名無しさん2010/01/07(木) 14:54:50
自動判別が必要な状況でインストール時にCCが設定できるとは思えないけどな
0968デフォルトの名無しさん2010/01/08(金) 02:34:25
管理者権限がないので、CCが設定できません(泣)
0969デフォルトの名無しさん2010/01/08(金) 12:43:48
!if [icl -help > nul 2> nul] == 0
あたりで十分だろ。
まさか95とかMEなのでcmd.exeじゃありませんとか言わんよな。
0970デフォルトの名無しさん2010/01/08(金) 12:52:17
同じく要cmd.exeだが
!if [for %I in (icl.exe) do @if "%~$$PATH:I" == "" exit 1] == 0
というのも思いついた。

この例だとメリットないと思うが、-helpみたいな何もしないで正常終了させる
オプションがないコマンドを調べるのには使えるかも。
0971デフォルトの名無しさん2010/01/08(金) 14:11:18
intel ccってインストールするとパス通すのか? vcは通さないよな。
0972デフォルトの名無しさん2010/01/08(金) 17:54:21
iclって、Win版のパラメータは /help とかじゃないのかな?
ちなみに、Linux版はインストールしても環境変数設定スクリプトが着いてくるだけ。
0973デフォルトの名無しさん2010/01/09(土) 08:18:53
Windows版も通常のコマンドプロンプトから使いたいなら自分で環境変数を追加売る必要がある
0974デフォルトの名無しさん2010/01/09(土) 09:47:33
それじゃ、まじめにやるならインストール情報を読むスクリプト組む。
手抜きならインストールパス決め打ち。
0975デフォルトの名無しさん2010/01/09(土) 10:23:38
Windowsでスクリプトって何使えばいいの?
0976デフォルトの名無しさん2010/01/09(土) 10:27:26
JScriptかVBScript
理由: わざわざインストールしないで済む。
0977デフォルトの名無しさん2010/01/09(土) 12:07:29
>>976
マイナーすぎてわからないので書いてください
0978デフォルトの名無しさん2010/01/09(土) 12:19:57
JScript, VBScriptがマイナーというのならnmakeを使うのは諦めなさい。
0979デフォルトの名無しさん2010/01/10(日) 23:28:03
IrrlichtMLをmakefileを使ってビルドしたいのですが、エラーが出てしまいます。
WindowsでMinGWを使ってるはずなのになぜ-I/usr/X11R6/includeをインクルードしてるんでしょうか・・
freetype.aをリンクさせるため、Makefileの46行目を次のように書き換えると、分離記号を欠いています出て一切動作しません。
http://etwas.wolfish.org/Irrlicht/irrlichtml.html

# Next variable is for additional scene nodes etc. of customized Irrlicht versions
EXTRAOBJ = freetype.a
LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \
$(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \
$(IRRGUIOBJ) $(ZLIBOBJ) $(JPEGLIBOBJ) $(LIBPNGOBJ) $(EXTRAOBJ)

↓Makefileを書き換えなかった場合(freetypeのincludeは追加した。)
C:\Documents and Settings\ユーザー名\My Documents\Visual Studio 2008\Projects\irrlicht
-1.6\source\Irrlicht>make
cc -fexpensive-optimizations -O3 -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_
NO_MNG_FEATURES -I../../include -Izlib -Ijpeglib -Ilibpng -Ifreetype -I/usr/X11R
6/include -DIRRLICHT_EXPORTS=1 -c -o zlib/adler32.o zlib/adler32.c
process_begin: CreateProcess(NULL, cc -fexpensive-optimizations -O3 -DPNG_THREAD
_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES -I../../include -Izlib -Ijpeg
lib -Ilibpng -Ifreetype -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1 -c -o zlib/adl
er32.o zlib/adler32.c, ...) failed.
make (e=2): 指定されたファイルが見つかりません。
make: *** [zlib/adler32.o] エラー 2
0980デフォルトの名無しさん2010/01/11(月) 07:54:10
>>979
後者のメッセージを見ると、「ccコマンドが見付からない」
って言われているんじゃないか?
0981デフォルトの名無しさん2010/01/11(月) 09:28:53
腐ったローカライゼーションは捨てて、オリジナルの英語のエラーメッセージを
持って来い。質問はそれからだ。
0982デフォルトの名無しさん2010/01/11(月) 23:15:15
>979
おかしいと思ったのならちょっとくらい Makefile 読もうぜ。
make sharedlib_win32 staticlib_win32
0983デフォルトの名無しさん2010/01/12(火) 06:08:41
>>978
nmakeじゃなくてcygwinのmakeを使っています。
0984デフォルトの名無しさん2010/01/12(火) 06:29:29
もうすぐ次スレ
スレタイが楽しみだわ
0985デフォルトの名無しさん2010/01/12(火) 07:56:33
>>984
make組 その2
0986デフォルトの名無しさん2010/01/12(火) 10:12:41
>>985
いやああああ
>>60近辺のおされ路線でお願いします
0987デフォルトの名無しさん2010/01/13(水) 00:57:08
make makes us madがいいな
レス数が950を超えています。1000を超えると書き込みができなくなります。