make makes many problems

このエントリーをはてなブックマークに追加
938デフォルトの名無しさん:2009/11/03(火) 04:40:49
makeのコンパイル以外の便利な使い方を教えてください。
939デフォルトの名無しさん:2009/11/03(火) 05:32:32
makeはコンパイラじゃないが
940デフォルトの名無しさん:2009/11/03(火) 05:40:57
質問よく読め
941デフォルトの名無しさん:2009/11/03(火) 12:20:59
変換
時間因果関係依存ファイル操作
942デフォルトの名無しさん:2009/11/04(水) 13:48:32
複雑にtouchしないと解けないパズルを
makeで作ることも出来るかもしれんな
943デフォルトの名無しさん:2009/11/05(木) 02:48:15
   make
+ makes
+  many
= problems

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

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

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

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

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

hoge.o: hogr.h

と書いてhoge.cppが変更された場合でもコンパイルされる理由がわかりません。
957デフォルトの名無しさん:2009/11/26(木) 10:16:53
>>956
いえ、コンパイルされませんよ
958デフォルトの名無しさん: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
959デフォルトの名無しさん:2009/11/26(木) 10:26:43
.c => .cppと読み替えてくれ。
960デフォルトの名無しさん:2009/11/26(木) 12:19:35
わかりやすい説明ありがとう
961デフォルトの名無しさん:2010/01/07(木) 05:26:19
Windowsのコマンドライン環境下で、もしIntelコンパイラがインストールされているならiclを
もしそうでないなら、clをつかうようにしたいのですが、Makefileはどのように書けばよいのでしょうか?
962デフォルトの名無しさん:2010/01/07(木) 10:00:41
環境変数CCにでも入れておいたらどうよ。
963デフォルトの名無しさん:2010/01/07(木) 11:07:56
nmake

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

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

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

この例だとメリットないと思うが、-helpみたいな何もしないで正常終了させる
オプションがないコマンドを調べるのには使えるかも。
971デフォルトの名無しさん:2010/01/08(金) 14:11:18
intel ccってインストールするとパス通すのか? vcは通さないよな。
972デフォルトの名無しさん:2010/01/08(金) 17:54:21
iclって、Win版のパラメータは /help とかじゃないのかな?
ちなみに、Linux版はインストールしても環境変数設定スクリプトが着いてくるだけ。
973デフォルトの名無しさん:2010/01/09(土) 08:18:53
Windows版も通常のコマンドプロンプトから使いたいなら自分で環境変数を追加売る必要がある
974デフォルトの名無しさん:2010/01/09(土) 09:47:33
それじゃ、まじめにやるならインストール情報を読むスクリプト組む。
手抜きならインストールパス決め打ち。
975デフォルトの名無しさん:2010/01/09(土) 10:23:38
Windowsでスクリプトって何使えばいいの?
976デフォルトの名無しさん:2010/01/09(土) 10:27:26
JScriptかVBScript
理由: わざわざインストールしないで済む。
977デフォルトの名無しさん:2010/01/09(土) 12:07:29
>>976
マイナーすぎてわからないので書いてください
978デフォルトの名無しさん:2010/01/09(土) 12:19:57
JScript, VBScriptがマイナーというのならnmakeを使うのは諦めなさい。
979デフォルトの名無しさん: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
980デフォルトの名無しさん:2010/01/11(月) 07:54:10
>>979
後者のメッセージを見ると、「ccコマンドが見付からない」
って言われているんじゃないか?
981デフォルトの名無しさん:2010/01/11(月) 09:28:53
腐ったローカライゼーションは捨てて、オリジナルの英語のエラーメッセージを
持って来い。質問はそれからだ。
982デフォルトの名無しさん:2010/01/11(月) 23:15:15
>979
おかしいと思ったのならちょっとくらい Makefile 読もうぜ。
make sharedlib_win32 staticlib_win32
983デフォルトの名無しさん:2010/01/12(火) 06:08:41
>>978
nmakeじゃなくてcygwinのmakeを使っています。
984デフォルトの名無しさん:2010/01/12(火) 06:29:29
もうすぐ次スレ
スレタイが楽しみだわ
985デフォルトの名無しさん:2010/01/12(火) 07:56:33
>>984
make組 その2
986デフォルトの名無しさん:2010/01/12(火) 10:12:41
>>985
いやああああ
>>60近辺のおされ路線でお願いします
987デフォルトの名無しさん
make makes us madがいいな