1 名前:デフォルトの名無しさん [02/08/18 00:51] 難しいし方言きつすぎて別の種類の make には使えないし 日本語のまともな資料ないし・・・。 だれかもっと便利でわかりやすいビルドツール作ってくれって感じ? 参考リンク tanaka-www.cs.titech.ac.jp/~euske/doc/make_qref.html www.tk.airnet.ne.jp/nagae/jp/comp/make/makefile.html www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/makefile.html kanon.plala.jp/develop/makefile.html lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/make-intro/simplest.html
2 名前:デフォルトの名無しさん [02/08/18 00:52] HSP使えば?
3 名前:デフォルトの名無しさん mailto:sage [02/08/18 00:53] 問答無用のウンコスレ
4 名前:デフォルトの名無しさん mailto:sage [02/08/18 00:59] Antがアリます。
5 名前:デフォルトの名無しさん mailto:sage [02/08/18 01:00] Antだけに
6 名前:デフォルトの名無しさん mailto:sage [02/08/18 01:07] Antツバキは恋の花
7 名前:デフォルトの名無しさん mailto:sage [02/08/18 01:12] あんと〜あん〜と〜 クソスレだけどスレタイ気に入った。
8 名前:デフォルトの名無しさん mailto:sage [02/08/18 01:17] make love
9 名前:1 [02/08/18 01:18] >>7 ありがとうございます。 日本人相手なら早口言葉としても使えます(多分) MMMP と覚えてください。
10 名前:デフォルトの名無しさん [02/08/18 01:33] HSP使えばいいのに
11 名前:デフォルトの名無しさん [02/08/18 01:33] make(・∀・)キター。 結構期待してたわん。
12 名前:デフォルトの名無しさん mailto:sage [02/08/18 01:49] gmakeで統一しろよ そうすりゃ方言なんて気にしなくていいだろ。
13 名前:デフォルトの名無しさん [02/08/18 02:52] ここはmake叩きスレというわけではないよな? VC++のメニューに メイクファイルのエクスポート ってのがあることを思い出した。 あれはイイもの?普通?クソ? (自分が使う機会があるかどうか微妙だけどとりあえず聞いてみる)
14 名前:1 [02/08/18 03:09] >>11 , >>13 どちらかというと make を語るスレです。 なんか一個も make のスレが無かったので立てました。
15 名前:デフォルトの名無しさん [02/08/18 03:16] automake使えば、makeがgmakeか、gじゃないmakeか判定して、 よきにはからってくれたようなきがする。 automakeで生成したMakefileがHI-UXのmakeでも通ったし。
16 名前:デフォルトの名無しさん mailto:sage [02/08/18 03:32] automake・・・・ なんでmakeごときがあんなに複雑(そう)になるのかね?
17 名前:question mailto:質問age [02/08/18 22:57] 本に載っているアルゴリズムのプログラムを打ち込んでコンパイルして勉強中です。 するとディレクトリの中に短く単発のソースとバイナリがいっぱいできます。 Makeを使って、Makefile内にソース名を打ち込まないで、 ソースと同名のバイナリをコンパイルすることはできませんか? 具体的には、ディレクトリの中が seive.cpp shellsort.cpp tree.cpp quicksort.cpp みたいになってるんです。それを >make 一発で seive.cpp seive.exe shellsort.cpp shellsort.exe tree.cpp tree.exe quicksort.cpp quicksort.exe になるようにできませんか? この後もどんどん細かいソースが増えるので、Makefileを書き直すのが面倒です。 でも特徴として、1ソース1バイナリになっているので可能な気がします。
18 名前:shige mailto:sage [02/08/18 23:12] Makefileを書き換えずにやるのは無理じゃないか? 新しいファイルがディレクトリにあった場合Makefileを更新するツールを スクリプト言語で書いた方が手っ取り早いだろう。
19 名前:デフォルトの名無しさん mailto:sage [02/08/18 23:27] SOURCE:=$(wildcard *.cpp)
20 名前:デフォルトの名無しさん mailto:sage [02/08/18 23:30] Antよりmakeの方が簡単
21 名前:shige mailto:sage [02/08/18 23:33] なるほど。
22 名前:デフォルトの名無しさん [02/08/18 23:57] ascii の FTP に、GNU Make のマニュアル日本語版があるよ。 >>1 のページに書いてあるようなことは卒業した人にお勧め。
23 名前:デフォルトの名無しさん mailto:sage [02/08/19 00:36] >>16 システムの全ての必要な要素について、 それがあるか?、またそのバージョンは? って調べていくんだから、そりゃ大変な作業だろ。 Windowsみたいにまとまってねーんだよ。UNIXは。 微妙な差異がものすごくめんどくさい。
24 名前:デフォルトの名無しさん mailto:sage [02/08/19 03:45] >>23 Windowsだってまとまってねーんだよ。 NTと95は全くの別物。
25 名前:デフォルトの名無しさん mailto:sage [02/08/19 19:48] >>23 いや、それは Autoconf と突っ込んでみる。 Makefile より Makefile.am の方が簡単だと思うし、 自分のところで動けばいいなら autoscan した後、 $ mv configure.scan configure.ac して、 - AC_CONFIG_HEADER([config.h]) + AM_INIT_AUTOMAKE([foreign]) - AC_CONFIG_FILES([]) + AC_CONFIG_FILES([Makefile]) するだけで結構うまくいったりするが、どうよ。 高度な事すると結構面倒だけどね。
26 名前:デフォルトの名無しさん [02/08/19 23:27] Minix のころは make から cc よぶメモリが足りなかったら make -n > hoge; sh hoge とかできたもんだ... あの頃は simpleだったのう。
27 名前:デフォルトの名無しさん mailto:sage [02/08/19 23:31] Antじゃダメなん? うちの会社、ソースはC++だけどAntでビルドしてるけど、それって異端?
28 名前:デフォルトの名無しさん mailto:sage [02/08/19 23:43] >>27 Javaならね。 UNIXはMakeの資産があるからAntが使われることはないと思う。
29 名前:27 mailto:sage [02/08/19 23:44] (´-`).。oO(うちの会社は異端かぁ)
30 名前:デフォルトの名無しさん mailto:sage [02/08/20 00:13] >>27 実行形式がJavaってだけで、動かないプラットフォームがでてくるし。 研究室の古株のDigitalUNIX(not Tru64)、IRIXの古いの、HI-UX、HP-UXあたり。 ライセンスとかハードウェアの関係で最新OSにすることはできないことが多い。
31 名前: mailto:sage [02/08/20 01:23] 逆にJavaの開発でmake使ってる人っているんか?
32 名前:デフォルトの名無しさん mailto:sage [02/08/20 03:35] 何だってこんな糞ツールがここまで普及したんだろう? UNIXの連中ってアフォばっかりだな
33 名前:デフォルトの名無しさん mailto:sage [02/08/20 06:08] UNIXはもっとLispに学ぶべきだ
34 名前:デフォルトの名無しさん mailto:sage [02/08/20 17:28] >>29 (´-`).。oO(そんな会社にいたんかぁ)
35 名前:デフォルトの名無しさん mailto:sage [02/08/20 22:18] >>32 融通効くからじゃない?行頭のTabを忘れなければ…。 ビルドの為に手間をかけるのが面倒だったからかもしれんし。 >>33 Lispでmakeに相当するもの…ですか?
36 名前: [02/08/21 00:20] >>27 C++だとmakedependしたいからやっぱりmake
37 名前:デフォルトの名無しさん mailto:sage [02/08/21 01:30] >>36 make depend って、私はいつも gcc -MM でやってるんですが、 他に何か定石的なやり方ってあります?
38 名前:デフォルトの名無しさん mailto:sage [02/08/21 01:34] 本来makeの機能ってコンパイラ自身が持っておくべきだと思うんだけどな。 んでpre/postな処理はsh/perlあたりでやればすっきりするはずだよ。 makeって機能が貧弱なわりに(そのせいでか?)人によって 書き方がかなり変わってきてメンテしづらいんだよな。
39 名前:デフォルトの名無しさん mailto:sage [02/08/21 02:06] 変態的なマクロとか 環境変数との関係とか make依存の痴漢ルールとか そのへんがイヤン
40 名前:デフォルトの名無しさん mailto:sage [02/08/21 02:42] >>37 Xのmakedepend
41 名前:デフォルトの名無しさん mailto:sage [02/08/21 02:47] 元となる C言語が貧弱すぎたからな。あと、リンカも貧弱すぎたのかも。 だから makeで外部的に一生懸命書く必要があった。 まあ、逆に Cが貧弱だから、あの程度の仕組みで分割コンパイルの 恩恵にあずかれたのかも。 C++なんか、分割コンパイルをまともに働かせるようにするの 大変そうだし。
42 名前:デフォルトの名無しさん mailto:sage [02/08/21 02:52] 別にmakeはCのためだけにあるわけではない。
43 名前:デフォルトの名無しさん mailto:sage [02/08/21 02:58] >>41 とはいえUNIX的ミニマリズムはいい加減古びつつあるような。 PerlやApacheなんかは単体のツールとしてどんどん複雑になっていくように 他のツールも高機能化・複雑化していくのは自然な流れでしょう。 >>42 それがよくない make setupなんてやるなら bash setupにしてくれよ。
44 名前:デフォルトの名無しさん mailto:sage [02/08/21 11:14] >>40 サンクスです。makedepend ってツールの名前だったのね。 ちょっと使ってみたけど、たしかに速い。 あと、gcc -MM みたいに、< > で囲んだやつは無視して くれるともっとよかったけど。
45 名前:デフォルトの名無しさん [02/08/24 18:28] >>43 自分でツールを作りながら処理するような場合は、やっぱり makeの枠組で出来た方が有難い。
46 名前:デフォルトの名無しさん [02/08/24 18:37] んだんだ。makeとコンパイラはやっぱり分かれてた方がいい。 勝手にされたらされたで不満がでるはず。
47 名前:デフォルトの名無しさん mailto:sage [02/08/25 12:30] >>43 make setupなんて見たことないぞ。
48 名前:デフォルトの名無しさん [02/08/29 04:16] age
49 名前:デフォルトの名無しさん mailto:sage [02/08/29 04:34] VC系の超貧弱makeのことを書いているヤシがいるような あれはmakeと呼ぶのもおこがましいが...
50 名前:デフォルトの名無しさん mailto:sage [02/08/29 04:35] vc系って何? makeと呼べる基準って何?
51 名前:デフォルトの名無しさん mailto:sage [02/08/29 12:49] >>2 は何が言いたかったのだろうか。
52 名前:gmake [02/08/30 03:55] |-- mona | |-- Makefile | |-- sample.xml | |-- mona.c | `-- mona.h |-- 2ch.so ↑のようなディレクトリ構成の時、 既にある2ch.soを用いてmonaディレクトリでmakeして、 monaってsoつくりたいんですけど、どーやればいいんでしょうか? 誰か助けてください。
53 名前:gmake mailto:sage [02/08/30 04:14] あ、monaっていう実行ファイルでした^^;
54 名前:デフォルトの名無しさん mailto:sage [02/08/30 05:28] >>52 $CFLAGSで出力先を変えればいいだけじゃないの? -o オプションかね。
55 名前:52 mailto:sage [02/08/30 08:25] >54 んーっと、 |-- mona | |-- Makefile | |-- sample.xml | |-- mona.c | |-- 2ch.so | `-- mona.h 2ch.soの生成をこうスレって話ですか(? 上の階層のアドインみたいな形にしたいんですけど、毎度コンパイル しないと駄目なんすかね? (既にあるのでそれを活用したい)2ch.so生成するルールがねーぞ、 ゴルァってでまふ。
56 名前:デフォルトの名無しさん mailto:sage [02/08/30 18:20] >>55 あなたの日本語が理解できないのだが、 -o やら -L やらで簡単に解決する話のような気がする。
57 名前:デフォルトの名無しさん [02/08/30 19:17] >>55 > (既にあるのでそれを活用したい)2ch.so生成するルールがねーぞ、 > ゴルァってでまふ。 ライブラリパスの設定するだけかも。 2ch.soを作成するのは?ってことならlibtoolでも使ってくれ。
58 名前:52 mailto:sage [02/08/31 04:41] パス設定して、でけたー さんくすこ>56-57
59 名前:デフォルトの名無しさん mailto:sage [02/08/31 11:08] make makes a massive mess. ってのを思いついた。そんだけ sage
60 名前:デフォルトの名無しさん [02/08/31 12:59] make makes me mad. はどう?つーか、いま FreeBSDの kernel buildでエラーでたから makeをおってるんだけど、さっぱりわかんねー。kmod.mk が動くときの cwdはどこなんだ?
61 名前:デフォルトの名無しさん mailto:sage [02/08/31 15:07] make makes macro maze.
62 名前:デフォルトの名無しさん mailto:sage [02/08/31 23:00] make makes me mad.
63 名前:デフォルトの名無しさん mailto:sage [02/09/01 10:33] make makes more money. だったらいいなぁ
64 名前:名無し人間 [02/09/02 00:12] >>38 web pageの更新にもmakeを使ってるから、 C compilerに統合されたら困るよぉ。 ところで、>>17 には>>19 で通じたんだろうか?
65 名前:デフォルトの名無しさん mailto:sage [02/09/02 00:24] MS製品のVC++、FrontPage(HTMLエディタ)ともに make的な機能が統合されてるよ。 思うにUNIXにOOPLが普及してmakeクラスがあればもっと使いやすくなるのでは。
66 名前:デフォルトの名無しさん [02/09/04 10:53] >>65 makeクラスってどういう意味?
67 名前:デフォルトの名無しさん mailto:sage [02/09/04 11:34] MSのmakeはNanchatte make
68 名前:デフォルトの名無しさん mailto:sage [02/09/04 18:56] 俺思うんだけど, コマンドラインで実用に耐えるコマンドがUnix系OSに比べて遥かに少ない Windowsで, makeなんて使いモノになるの? Windowsで仕事したことないから分からんのだけど, だれかおせーれ.
69 名前:デフォルトの名無しさん mailto:sage [02/09/04 23:21] >>68 > Windowsで, makeなんて使いモノになるの? libtiffをVC++6で利用するためにnmakeを利用したけど、 自分でhoge.makを書く気にはならんかった。
70 名前:デフォルトの名無しさん mailto:sage [02/09/05 00:06] >>68 cygwin使え。
71 名前:68 mailto:sage [02/09/05 01:26] >>69 やっぱりそうだよね. >>70 cygwin使うくらいならWindowsなんて使わんよ(笑). 仕事でWin触ることはあり得ないからイイっす.
72 名前:デフォルトの名無しさん [02/09/07 02:14] そもそもWindowsがCUIのためのOSじゃないってことなんだろうな。 だからcygwinは イイ(・∀・)!! わけで。 CUIが好きなのにWindowsを使う人はmake犬。
73 名前:デフォルトの名無しさん mailto:sage [02/09/07 02:21] >>66 UNIXの欠点はすべてのコマンドがプロセス毎に独立してしまっていて 通信手段は貧弱なパイプしかない。 そこでmake, sort, grep等のコマンドをすべてクラス化してしまって 同一プロセス内で使えるようにすればもっと使いやすくなるのではと推測してみる。
74 名前:デフォルトの名無しさん mailto:sage [02/09/07 02:32] 疎結合から密結合へ退化ですな
75 名前:デフォルトの名無しさん mailto:sage [02/09/07 02:52] UNIXは疎に過ぎる。 パイプとソケットだけではもうまともなアプリは作れないよ。 プロセス・ネット越しにオブジェクト間でお話できないとね。
76 名前:デフォルトの名無しさん [02/09/07 02:59] あのー質問です。gnu make 使っているんですけど make を起動した後でどこかのディレクトリに潜って(depして) 元のディレクトリの内容を変更したんですが 正しくディレクトリの変更が反映されていないみたいなんです。 元の gmake にもう一度ディレクトリ内のファイルの依存関係を 読み込ませるにはどう指示すべきでしょうか?
77 名前:デフォルトの名無しさん mailto:sage [02/09/07 04:31] >>75 pipe とかの上でも、HTTP とかの protocol を使えば、お話自体はできるはずなんだけど… 誰かがそんな library 作って広めない限り、話しかけても相手にされないんだよね… PID か何かを元に、それぞれが互いに話しかけたりできればいいんだけど…
78 名前:デフォルトの名無しさん mailto:sage [02/09/07 06:53] PascalのUNIT方式ならメイクに必要な情報はソース中に書いてコンパイラが処理してくれるのに。 C使うとソースとは別にmake書かなきゃならないんで「なんでこれくらいのことやってくれないんだ」とイライラしてくる。 そのくせコンパイル速度も遅いし。
79 名前:デフォルトの名無しさん mailto:sage [02/09/07 12:27] コンパイル速度と言えば、gccってpch (precompiled header)みたいなのないの? VC++にあるけど、あれがあれば開発中にコンパイル速度に悩むことは無いと思うが。
80 名前:デフォルトの名無しさん mailto:sage [02/09/07 13:24] makefileなんて小規模なのならチョイチョイっとやるだけで済むし、 大規模ならautoconf,automakeで済ませればいいから体した手間ではないと思うのだが…。
81 名前:デフォルトの名無しさん mailto:sage [02/09/07 20:09] >>76 もうちょっと具体的に書いてくれないと答えられないよ。
82 名前:デフォルトの名無しさん mailto:sage [02/09/07 21:58] automakeが面倒なんだが
83 名前:デフォルトの名無しさん [02/09/10 05:00] 意外とデフォルトのルールだけでうまくいったりして ...
84 名前:デフォルトの名無しさん mailto:<sage> [02/09/10 13:02] >>83 > 意外とデフォルトのルールだけでうまくいったりして ... ライブラリとかあると,なかなかそういうわけにはいかないよね.
85 名前:デフォルトの名無しさん [02/09/10 20:29] 検索するとautomake/autoconfサイトいっぱい出てくるんだけど どのサイトが一番いいの?
86 名前:デフォルトの名無しさん mailto:sage [02/09/10 20:31] あ、そうだ。 死のうっと。
87 名前:デフォルトの名無しさん mailto:sage [02/09/10 20:36] automake win32(非cygwin)で動かしたいんだけど、互換ソフト無いですか? シェルスクリプトみたいなので、そのままじゃ動かないですよね
88 名前:デフォルトの名無しさん mailto:sage [02/09/10 21:36] >>78 > PascalのUNIT方式ならメイクに必要な情報はソース中に書いてコンパイラが処理してくれるのに。 #if 0 cc -o hoge hoge.c exit 0; #endif #include <stdio.h> int main(void) { printf("hoge\n"); } このソースに実行権限をつけて実行するとexit以下は実行せず かつ#がコメント化する事を利用したハック コンパイルする場合は#if 0 で囲んであるのでコンパイラは無視する。 ツールレベルの小さなプログラムが多数ある場合、 makefileとソースの管理がウザイんでこの手を使うこともある。
89 名前:デフォルトの名無しさん mailto:sage [02/09/10 23:55] >>78 PascalにUNITなんてものは規定されていない罠。
90 名前:デフォルトの名無しさん [02/09/13 14:08] せめてデフォルトで用意されているマクロくらいは make 間で統一されてればなーと思いませんか ?
91 名前: ◆k/Ubp.Kg mailto:sage [02/09/13 14:30] >>90 あー、それは確かに思うね。普段はGNU make使ってるから気にならないけど、他のmake使うと途端に困る…w
92 名前:デフォルトの名無しさん [02/09/13 16:40] automakeってヘッダの依存まで調べてくれるの?
93 名前:90 mailto:sage [02/09/13 17:09] あと, つい数日前まで恥ずかしながら知らなかったことなんですが, Solaris 6 (7 かも) の /usr/ccs/bin/make の suffix rule って, 例えば .c.o : rule っていう感じなんですね. .c.o : rule ではだめみたい. 特定の make に依存しないように, デフォルトのマクロの挙動に 気を使って Makefile を書いてたけど, その努力は意外なところから破綻してしました ...
94 名前:デフォルトの名無しさん mailto:sage [02/09/13 18:28] >>92 > automakeってヘッダの依存まで調べてくれるの? $ gcc -M hoge.c で出力される程度には調べてくれます。depcompが調べてくれたと思います。
95 名前:デフォルトの名無しさん mailto:sage [02/09/13 20:49] ちょほいと勉強しようと思ったけど長すぎて読んでられないよ www.gnu.org/manual/autoconf-2.53/html_mono/autoconf.html www.gnu.org/manual/automake-1.6.1/html_mono/automake.html
96 名前:デフォルトの名無しさん mailto:sage [02/09/14 09:01] >>95 > ちょほいと勉強しようと思ったけど長すぎて読んでられないよ texinfo-4.2を使っているなら、それぞれソースを持ってきて $ makeinfo --html auto*.texi すると分割されるが、って、全体の長さは変わらないけどね。 GNUjdoc (ttp://openlab.ring.gr.jp/gnujdoc/)には日本語訳も あるみたい。
97 名前:デフォルトの名無しさん mailto:sage [02/09/14 13:09] >>75 >>77 Gnomeは単なるGUIシェルだと思ってるのか?
98 名前:デフォルトの名無しさん [02/09/14 22:32] 以下のようなディレクトリ構成の場合にちゃんとビルドするには どうしたらいいでしょうか?gmake か MS の make か borland の make でお願いします。 一応、ディレクトリ分けしない状態ならうまくいった(ボーランドのmake)のですが… +project |-------makefile |-------+bin | |-------app.exe |-------+obj | |-------abc.obj | |-------def.obj |-------+src | |-------abc.cpp | |-------def.cpp |-------+include |-------abc.h |-------def.h ●ディレクトリ分けしなかった時の makefile CPP_FLAGS = -c -GX -GR CPP_COMPILE = cl LINK = link OBJS = abc.obj def.obj app.exe: $(OBJS) $(LINK) $(OBJS) .cpp.obj: $(CPP_COMPILE) $(CPP_FLAGS) $< .h.cpp: よろしくお願いします。
99 名前:デフォルトの名無しさん [02/09/14 22:38] お前ら自慢の手書きmakefileのテンプレ晒して下さい。
100 名前:デフォルトの名無しさん mailto:sage [02/09/14 23:24] >>98 なんかmakefile以前の問題のような。 望むような動作をバッチファイルで書ける?
101 名前:98 mailto:sage [02/09/14 23:39] >>100 望む動作をバッチファイルで実現できたら make は使いませんが… 普通にコンパイルする方法を知っているのか?という意味だと受け取ったので 「それくらいわかってるよ!」という事を証明しておきます。 cl -c -GX -GR -Fo.\obj\abc.obj .\src\abc.cpp cl -c -GX -GR -Fo.\obj\def.obj .\src\def.cpp link -out:.\bin\app.exe .\obj\abc.obj .\obj\def.obj これを是非 makefile にしたいです。
102 名前:デフォルトの名無しさん mailto:sage [02/09/15 00:05] >>101 makefile : bin/app.exe: cl -c -GX -GR -Fo.\obj\abc.obj .\src\abc.cpp cl -c -GX -GR -Fo.\obj\def.obj .\src\def.cpp link -out:.\bin\app.exe .\obj\abc.obj .\obj\def.obj clean: del /s /q . > nul rmdir /s /q .
103 名前:デフォルトの名無しさん mailto:sage [02/09/15 00:25] >>98 もっと具体的に書いてくれないとわかんないよ。
104 名前:98 [02/09/15 00:28] >>102 いやーお兄さん一本取られちゃったな。 > 望む動作をバッチファイルで実現できたら make は使いませんが… を優先ですか、さすが! っていうか、マジレスキボンヌです。 ちゃんと依存関係を調べて make できる makefile の書き方を教えてください。 よろしくお願いします。
105 名前:98 mailto:sage [02/09/15 00:31] >>103 src 内に .c や .cpp ファイルがあって、 include 内に .h があって これらのファイルをコンパイルして 最後にリンクして、できあがったファイルを bin の中に入れたいのです。 よろしくお願いします。
106 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:04] >>99 # CFLAGS = -ansi
107 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:07] >>105 それだけではどんな統合環境でもメイクできないのでは。 リンクしてできあがるファイルが何なのかさえわからないじゃん。
108 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:11] >>98 暗黙のルールに依存しないで すべてのソースを明示的にコンパイルすりゃできるけど そんなの面倒だから全部同じディレクトリにしとけ。 んでmake installでバイナリだけコピーすりゃいいよ。
109 名前:98 [02/09/15 01:17] >>107 いや、ファイルの種類や、取り扱いに使うコマンドはどうでもいいのです。 make の書式について知りたいのです。 とりあえず上記例でも出しているのでコマンド等は下記のように仮定してもらっても結構です。 できあがるファイルの種類 *.exe ソースの種類 *.cpp ソースが依存しているファイルの種類 *.h コンパイルに使用するコマンド cl.exe リンクに使うコマンド link.exe、 コンパイル時に常に引き渡すオプション -c -GX -GR リンク時に常に引き渡すオプション なし cl.exe に出力ファイルを指定する為のオプション -Fo link.exe に出力ファイルを指定する為のオプション -out: よろしくお願いします。
110 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:19] もう一声. 知りたい make の書式とはどんなやつのこと ?
111 名前:98 [02/09/15 01:19] >>108 まともなレスありがとうございます。 暗黙のルールの中にはディレクトリは指定できないという事でしょうか?
112 名前:98 [02/09/15 01:22] >>110 えっと…、「書き方」です。 .cpp ファイルが src というディレクトリ内にあって、 .h ファイルが include というディレクトリ内にあって、 .obj ファイルが obj というディレクトリ内にあるんだよ。という事を make に教える方法というか…。
113 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:24] >>109 手っ取り早いのは vpath でサーチするディレクトリを追加じゃない? bin に ふつーに Makefile を書いて vpath で include や src を追加したら それらのディレクトリも見てくれる。 厳密にやりたいなら、スクリプトの助けがいりそう。 おいらは素人なので偉い人ならもっとスマートにできるかもしれないけど。
114 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:28] suffix rule はカレントディレクトリしか検索しないと思います. で, 113 の言うとおり VPATH で指定すればいいんですけど, お使いの make にその機能はありますか ?
115 名前:98 [02/09/15 01:29] CPP_FLAGS = -c -GX -GR CPP_COMPILE = cl LINK = link >>110 ちなみに、下記は擬似例ですが、雰囲気は伝わるでしょうか? . が拡張子の意味とカレントディレクトリの意味でかぶっていて見づらいとは思うのですが >>98 , >>112 とあわせて見てもらえると、私が何を求めているのか 理解して頂けるような気がするのですが… OBJS = ./obj/abc.obj ./obj/def.obj ./bin/app.exe: $(OBJS) $(LINK) $(OBJS) ./src/.cpp ./obj/.obj: $(CPP_COMPILE) $(CPP_FLAGS) -fo ./obj/$<.obj ./src/$< ./include/.h ./src/.cpp:
116 名前:98 [02/09/15 01:32] 失礼しました、上の方に謎な文がくっついてしまいました。 # Mozilla 1.0 ってちょっとバギーですよね…。 # .9.x の頃のがしっかりしてたな…。 >>113-114 無学なもので vpath という物を知らないのですが、 独立したコマンドでしょうか? make のオプションでしょうか?
117 名前:113 mailto:sage [02/09/15 01:33] >>113 具体的に言うと shell でディレクトリに潜って ls でリストを変数にいれて addprefix で bin/ なり src/ なり include/ obj/ なりを付け加えて それを Makefile.hogera で出力して $(MAKE) -f Makefile.hogera ってする。
118 名前:113 mailto:sage [02/09/15 01:34] >>116 GNU Make にあるコマンド。addprefix もそう。
119 名前:98 [02/09/15 01:36] >>117 なるほど、そういう技巧を使わないとできないんですね。 >>108 さんの方法でお茶を濁そうかと思います。 みなさんありがとうございました。
120 名前:113 mailto:sage [02/09/15 01:51] 別に技巧ってほどのものじゃないしスマートじゃないけどね…。 やっぱ偉い人がツッコミいれてくれないとイマイチだな…。
121 名前:デフォルトの名無しさん mailto:sage [02/09/15 02:01] make自体スマートじゃないからどうしようもない。 それに凝ったmakefile書く奴ってく非生産的なのが多いので makefileはシンプルに。つかVC使えよ。
122 名前:デフォルトの名無しさん mailto:sage [02/09/15 02:03] VC厨までが出てきたか もう寝るよ
123 名前:デフォルトの名無しさん mailto:sage [02/09/15 02:21] ↑もう起きて来なくていいよ。
124 名前:デフォルトの名無しさん mailto:sage [02/09/15 02:39] >>120 低レベルなム板で頑張っても無意味。unix板に帰ろう。
125 名前: mailto:sage [02/09/15 05:40] >>98 こんなところだろう。 SRCDIR=src OBJDIR=obj INCDIR=include BINDIR=bin DIRS=$(OBJDIR) $(BINDIR) CPP_COMPILE=cl CPP_FLAGS=-c -GX -GR -Fo$(OBJDIR)\ -I$(INCDIR) LINK=link LINK_FLAGS= OBJS=$(OBJDIR)\abc.obj $(OBJDIR)\def.obj TARGET=$(BINDIR)\app.exe all: $(DIRS) $(TARGET) $(DIRS): @if not exist $@\nul mkdir $@ $(TARGET): $(OBJS) $(LINK) -out:$@ $(LINK_FLAGS) $(OBJS) {$(SRCDIR)\}.cpp{$(OBJDIR)\}.obj: $(CPP_COMPILE) $(CPP_FLAGS) -c $< $(OBJDIR)\abc.obj: $(INCDIR)\abc.h $(OBJDIR)\def.obj: $(INCDIR)\def.h
126 名前:デフォルトの名無しさん mailto:sage [02/09/15 06:33] >>125 >$(LINK) -out:$@ $(LINK_FLAGS) $(OBJS) -out:が思いっきり依存しちゃってるので、CPP_COMPILEとか定義する意味がない >$(OBJDIR)\abc.obj: $(INCDIR)\abc.h >$(OBJDIR)\def.obj: $(INCDIR)\def.h これがかなりイマイチと感じる。
127 名前:デフォルトの名無しさん [02/09/15 12:04] >>125 その Makefile まともに動かないような気がするんですが, MS か Borland の make ではちゃんと動くんですか ? GNU make では意図したとおりに動かないですよねえ ... 気のせいかな.
128 名前:デフォルトの名無しさん mailto:sage [02/09/15 14:33] ほれ。検証しとらんがこんなもんだろ。gmake 版ね。 BINDIR = bin OBJDIR = obj SRCDIR = src INCDIR = include COMPILER = cl TARGET = $(BINDIR)/app.exe OBJS = $(addprefix $(OBJDIR)/, abc.obj def.obj) all: $(TARGET) $(TARGET): $(OBJS) <TAB> $(COMPILER) $(LDFLAGS) $^ -o $@ $(OBJDIR)/%.obj: $(SRCDIR)/%.cpp <TAB> $(COMPILER) $(CFLAGS) -c $< -o $@
129 名前:デフォルトの名無しさん mailto:sage [02/09/15 15:07] >>128 検証しました。 makefile 的にはあっている模様ですが、当方の cl.exe (VC6SP5)が -c オプション(コンパイルオンリー) を指定した場合、 -o でディレクトリを指定しても無視されて、全部カレントに吐き出す為 だめぽになっています。 あと TOUCH = touch で $(SRCDIR)/%.cpp: $(INCDIR)/%.h <タブ> $(TOUCH) $@ は書き忘れでしょうかね。
130 名前:デフォルトの名無しさん mailto:sage [02/09/15 15:24] なるほど pattern rule は suffix rule と違って, ディレクトリ指定が できるのがいいですね. いままで使用する make にかなり依存するので避けてたんですが. ちなみに Linux の GNU make, Solaris の make では OK, IRIX, FreeBSD の make ではだめでした.
131 名前:129 [02/09/15 15:28] ちゃうわ、cl.exe の出力ファイル指定オプションは -Fo やった。 これで VC + gmake 使いの皆さんはハッピーになれますか? BINDIR = bin OBJDIR = obj SRCDIR = src INCDIR = include COMPILER = cl TOUCH = touch TARGET = $(BINDIR)/app.exe OBJS = $(addprefix $(OBJDIR)/, abc.obj def.obj) all: $(TARGET) $(TARGET): $(OBJS) <豚>$(COMPILER) $(LDFLAGS) $^ -o $@ $(OBJDIR)/%.obj: $(SRCDIR)/%.cpp <豚>$(COMPILER) $(CFLAGS) -c $< -Fo./$@ $(SRCDIR)/%.cpp: $(INCDIR)/%.h <豚>$(TOUCH) $@
132 名前:デフォルトの名無しさん mailto:sage [02/09/15 15:36] >>130 > IRIX, FreeBSD の make ではだめでした. gmake は入ってませんか? なけりゃインストールしちゃいましょう。 わたしゃ、もう、gmake 以外は使えない体になってしまいますた。 >>131 > $(SRCDIR)/%.cpp: $(INCDIR)/%.h > <豚>$(TOUCH) $@ あまり見かけないやりかたですね。cl には gcc の -M オプションみたいのは ないのかな?
133 名前:デフォルトの名無しさん mailto:sage [02/09/15 15:54] makedepend.exe っつーのが存在するようですね。 www.google.com/search?q=cache:6G81zaaJ2fwC:hm.aitai.ne.jp/~mtani/gnuwin_2.htm+makedepend.exe&hl=ja&lr=lang_ja&ie=UTF-8
134 名前:デフォルトの名無しさん [02/09/15 21:12] cygwin を使っているのですが、makefile 中で cd Dir pwd と書いたとき、pwd が Dir に移動していない時のディレクトリを返してきます。 これは通常動作なのでしょうか?
135 名前:デフォルトの名無しさん mailto:sage [02/09/15 21:17] 通常動作。各行は、(おそらく) system によって実行されている。
136 名前:デフォルトの名無しさん mailto:sage [02/09/15 21:20] 通常動作です. make は 1 行ごとにコマンド行を解釈して shell を呼び出すような 動作をします. hoge : fuga <tab>cd Dir; \ <tab>pwd でお望みの動作が得られると思います.
137 名前:134 mailto:sage [02/09/15 22:37] >>135-136 なるほど、各行で独立して実行されるイメージなのですね。 ありがとうございました。
138 名前:デフォルトの名無しさん mailto:sage [02/09/16 03:32] Makefile中でヒアドキュメントを使えますか? cat <<EOF any message EOF ってのをMakefileでやりたいのですが、tabをいれたりとかいろいろやってもうまくいきませんでした。 1行ずつechoするしかないんでしょうか。
139 名前:デフォルトの名無しさん mailto:sage [02/09/16 04:06] \
140 名前:デフォルトの名無しさん mailto:sage [02/09/16 05:39] >>139 それがうまくいかないんです。多分使い方が間違っていると思うんですけど。 target: [TAB]cat <<EOF \ [TAB] hoge hoge \ [TAB]EOF target: [TAB]cat <<EOF [TAB] hoge hoge \ [TAB]EOF こんなのは試しました。
141 名前:デフォルトの名無しさん mailto:sage [02/09/16 05:46] depend: makedepend -- $(FLAGS) -- $(ALL_C_FILES)
142 名前:デフォルトの名無しさん mailto:sage [02/09/16 10:10] ヒアドキュメントはあまり使わないので詳しくないのですが. もし sh 上で 1 行でヒアドキュメントが使えれば, make でも使えるかも しれません ... が, 私にはできないように思います.
143 名前:デフォルトの名無しさん mailto:sage [02/09/16 18:10] <<EOFが不要なんじゃ target: [TAB]cat \ [TAB] hoge hoge
144 名前: mailto:sage [02/09/16 19:03] >>143 here documentって知ってる?
145 名前:デフォルトの名無しさん mailto:sage [02/09/18 12:30] >>140 \ → ;\ は試した?
146 名前:138 mailto:sage [02/09/20 02:59] >>145 返事が遅れてゴメンなさい。 all: [TAB]cat <<EOF;\ [TAB]hoge hoge \ [TAB]EOF として試してみましたが、 /bin/sh: hoge: command not found と出ました。 # 仕方無いのでechoで頑張りますた。
147 名前:デフォルトの名無しさん mailto:age [02/10/22 21:22] Eiffel イイ!!
148 名前:デフォルトの名無しさん mailto:sage [02/10/22 21:43] あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 あげちゃったわけでつか。 氏ねよ、クソが。
149 名前:デフォルトの名無しさん mailto:xz [02/10/22 21:56] >>1 ant
150 名前:デフォルトの名無しさん [02/10/23 16:26] 下のコメントのようなことがしたくて悩んでいるんですが、 どうすればいいでしょうか? お知恵を貸してください DATAFILES1 = a.dat b.dat DATAFILES2 = c.dat d.dat OFILES = $(DATAFILES1:.dat=.o) $(DATAFILES2:.dat=.o) %.o : %.dat # DATAFILE1のファイルは, objcopy -XXXX $< $@ # DATAFILE2のファイルは, objcopy -YYYY $< $@
151 名前:デフォルトの名無しさん mailto:sage [02/10/23 17:36] OFILES1 = $(DATAFILES1:.dat=.o) OFILES2 = $(DATAFILES2:.dat=.o) # DATAFILE1のファイルは, objcopy -XXXX $< $@ $(OFILES1): %.o : %.dat objcopy -XXXX $< $@ # DATAFILE2のファイルは, objcopy -YYYY $< $@ $(OFILES2): %.o : %.dat objcopy -YYYY $< $@
152 名前:150 mailto:sage [02/10/23 19:52] >>151 そんな記述ができるんですね。 すごく勉強になります。 ありがとうございます。
153 名前:デフォルトの名無しさん mailto:sage [02/10/24 04:43] >>151 それ知らなかった。info make見ても見つけられなかったんだが、どこに書い てある?
154 名前:デフォルトの名無しさん mailto:sage [02/10/24 10:10] static pattern rules のところに書いて歩けど。
155 名前:デフォルトの名無しさん mailto:sage [02/10/24 10:11] あ、もちろん GNU Make の話ね。
156 名前:デフォルトの名無しさん mailto:sage [02/10/24 11:42] >>154 ほんとだ。tnx ふしあなさんだったよ。
157 名前:デフォルトの名無しさん mailto:age [02/11/05 00:28] HSP使えばいいのに
158 名前:デフォルトの名無しさん mailto:vvvtb [02/11/12 11:43] VB のためなら死ねる!!
159 名前:デフォルトの名無しさん mailto:sage [02/11/22 20:59] static pattern rules のところに書いて歩けど。
160 名前:みな [02/11/25 15:20] ■『C と C++ とが混在した Makefile で makedepend を使うには?』[1/2] 初めまして。宜しく御願い致します。 まず,私は Makefile に関してはかなり未熟者のレベルです。 必要に応じてウェブ上で検索しては知識を付けている段階です。 さて,止むを得ない事情で, *.h *.c *.cpp という,C と C++ とが混在した Makefile でプログラム開発中です。 makedepend を導入したいと思い, ウェブ上で検索した幾つかの入門ページを参考にしつつ,―― TOP = /usr/local/test INCDIR = $(TOP)/../common/include -I$(TOP)/include SRCS = aaa.c bbb.c SRCSXX = xxx.cpp yyy.cpp OBJS = $(SRCS:.c=.o) OBJSXX = $(SRCSXX:.cpp=.o) CFLAGS = -O3 -Wa,-al -fno-common -G0 CXXFLAGS = -O3 -Wall -Werror -Wa,-al -fno-exceptions -fno-common -G0 -ansi .SUFFIXES: .o .s .dsm .c .cc .cpp depend: makedepend -I$(INCDIR) -- $(CFLAGS) -- $(SRCS) 2>/dev/null makedepend -a -I$(INCDIR) -- $(CXXFLAGS2) -- $(SRCSXX) 2>/dev/null ――(一部抜粋 & ファイル名は例示用)の様に Makefile を書き直し, 途中までは意外と(?)順調に導入が進んだのですが…。 (▼ >>161 に続く…… ▼)
161 名前:デフォルトの名無しさん [02/11/25 15:21] make!
162 名前:みな [02/11/25 15:28] ■『C と C++ とが混在した Makefile で makedepend を使うには?』[2/2] (▲ …… >>160 からの続き ▲) (※ 先に >>161 に割り込まれてしまいました…。スミマセン…。) やっと,導入完了と思って make depend と実行してみたところ, Makefile 中には―― # DO NOT DELETE aaa.o: def4c.h aaa.h bbb.o: def4c.h bbb.h xxx.c.o: def4cpp.h xxx.h yyy.c.o: def4cpp.h yyy.h ――の様に自動生成されてしまいました。 勿論,正しくは―― # DO NOT DELETE aaa.o: def4c.h aaa.h bbb.o: def4c.h bbb.h xxx.o: def4cpp.h xxx.h yyy.o: def4cpp.h yyy.h ――となって欲しいところなのですが, ウェブ上で検索して出てくる典型的なサンプルは *.c しか前提にしてない様で, 一体どうやれば良いのかさっぱりわかりません。 もしかして,makedepend 自体が C++ には対応してないのでしょうか…? どうぞ御教授下さい。 正解そのものが無理なら,より適切な調べ方(検索方法)だけでも,御願い致します。 ※ 以上で情報不足の場合は, 例えば Makefile の一部抜粋等々,今後追加書き込み致します。
163 名前:デフォルトの名無しさん mailto:sage [02/11/25 16:48] 使ってる makedepend が腐ってるんじゃないのかなぁ? 1) 新しいやつをインストールしてみるか 2) gcc/g++ -MM オブションを使うか 3) | sed -e 's/\.c\.o/\.o/' をかますか してみては。
164 名前:みな [02/11/25 17:59] >>163 さん,早速レス有り難う御座います。 周りの人に訊いても,自力で色々検索しても,サッパリわかんなかったんで, こうして何かレス頂けると,ホント嬉しいです。 makedepend が腐ってるっスか…。う〜ん…。 man 見ても,makedepend のバージョン表示する為のオプションって 見当たらないですよねぇ。(困) えぇと…,取り敢えず「3) | sed -e 's/\.c\.o/\.o/' をかます」って, 具体的にどこにどう記述すればいいんでしょうか?
165 名前:かなり適当 mailto:sage [02/11/25 18:33] >>160 > .SUFFIXES: .o .s .dsm .c .cc .cpp この行消してみるとどうなる?
166 名前:みな [02/11/25 19:04] 「かなり適当」こと >>165 さん,只今やってみましたが―― ――やっぱりダメでした…。 自動生成内容に,何も変化は起こりませんでした。 そういえば,自分で試行錯誤してた際も,この行を色々と書き換えてみたけど, 結果に何等変化が無かった記憶が…。 てゆーか,そもそもこの行,そんなに必要な行なんですかねぇ…?? 一応,サンプルなぞを真似つつ,取り敢えず付けてあるだけな感じなんですけど。 仮に全く無くしたりすると,具体的にどんな不都合が…?
167 名前:163 mailto:sage [02/11/25 19:14] そうか、makedepend って、Makefile を直接書き換えちゃうのか。 とすると、makedepend をした後に、 sed -e 's/\.c\.o/\.o/' Makefile > Makefile.new mv Makefile Makefile.bak mv Makefile.new Makefile とかやってみては。 ちなみに、オレだったら、GNUMakeが前提だけど depend: makedepend -fdepend.mf -I$(INCDIR) -- $(CFLAGS) -- $(SRCS) makedepend -f- -I$(INCDIR) -- $(CXXFLAGS2) -- $(SRCSXX) | sed 's/\.c\.o/\.o/' >> depend.mf -include depend.mf とやるかな。つまり、依存関係は別ファイルに書き出して、それを Makefile にインクルードさせる。
168 名前:みな [02/11/25 19:40] 度々アドバイス有り難う御座います。> >>163 (= >>167 )さん いや,>>163 で書いてあった「3)」の,(パイプで)「かます」っていうのが, Makefile 中のどこにどんな風に記述したらいいのか謎だったんです。 取り敢えず,>>167 前半のやり方で,一応目的の内容の Makefile は得られますね。 もしかしたら,もっとスマートなやり方が有るのかも知れませんけど。 (コマンドライン複数行分を何等かのスクリプトファイルにしちゃうとか…?) >>167 後半のやり方は,今から早速勉強させて頂きます。 某 Visual 何たらの統合環境の“全自動”に甘やかされて育つと, いざという時に弱々だなーと,思い知らされてるトコでして…。 今回は,色々と教えて下さって,有り難う御座います。 もしかしたら,今後また別件でマヌケな質問してしまうかも知れませんけど。(汗)
169 名前:デフォルトの名無しさん mailto:sage [02/11/26 12:25] 普通のmakeだったら.dependってファイルに依存関係吐き出しとけば 勝手に読み込んだりしないかな?FreeBSDのmakeはそうだったけど。 .dependをつくるmkdepなんてコマンドもある。 -aオプションをつけると追加書き込みもしてくれるみたい。
170 名前:デフォルトの名無しさん [02/11/26 14:17] どこのmakedependだか知らないけど、Xに付いてるやつなら、 大昔からC++には対応しているはずだけどなあ。 どうせそんなmakedependなら、sedで逃げても、まともに C++の構文読んでくれなかったり、__cplusplusが定義されて いなかったりするんじゃないのか? まともなmakedepend入れた方がいいよ。 gccmakedepなら-MMとか使えるし。
171 名前:名無しさん@カラアゲうまうま mailto:sage [02/11/26 14:30] >>169 たぶん*BSD固有。
172 名前:みな [02/11/26 17:15] >>170 さん gccmakedep なんて在ったんですね。知りませんでした…。 で,>>160 の makedepend を単に gccmakedep に置換してみたところ, あっさり,*.c.o の問題は解決しました! まずは,有り難う御座います。> >>170 さん ところが,別の問題が…。 makedepend の生成してくれた依存関係は, ホントに漏れ無く書き出してある感じだったんですけど, gccmakedep の生成してくれる依存関係は, パッと見ただけで,明らかに不足気味なんですよ。 例えば,何十個も在るソースファイル中に, test1.cpp test2.cpp test3.cpp というのが在ったとすると, 当然,test1.o test2.o test3.o それぞれに 依存関係の在るヘッダファイル *.h を書き出してあるべきですけど, gccmakedep の生成する依存関係って, 例えば test1.o と test3.o とに関しては書き出してあっても なぜか test2.o に関しては何も書き出してなかったりとか。 勿論,test2.cpp から何も #include してないなんて事はありません。 う〜ん,まさに一難去ってまた一難。
173 名前:デフォルトの名無しさん mailto:sage [02/11/26 22:17] ifdefの関係でincludeされないようになっているとか。 -DXXXは基本的にコンパイル時と同じように設定しないとダメ。 あと、インクルードパスが通っていないのかも。多分C++の 標準インクルードパス(/usr/include/g++とか)は自分で追加 する必要があると思う。 それでダメなら、根本的に環境がおかしいのかなあ。gccmakedep が入っているからにはXが入っているんだろうけど、X11R5だったり、 gccがegcsよりさらに昔のだったりしないか?あるいは、gcc向け でなく、別のコンパイラ向けにソースを書いているのに、gccmakedep を使おうとしているとか。
174 名前:みな [02/11/27 13:46] >>173 さん 前半で御指摘の「includeされない」「パスが通っていない」云々は, まず無いと思うのですけど…。 理由は,>>172 に書いた通り, 「>>160 の makedepend を単に gccmakedep に置換してみた」だけだからです。 つまり,makedepend の方を使えば,当初の謎だった「*.c.o の問題」以外は, 全てうまくいってました。 また,もし #ifdef がらみで #include されてなかったとすると, 宣言無しで暗黙に使おうとした云々と,コンパイル時にエラーが出ると思います。 やはり後半で御指摘の「根本的に環境がおかしい」んですかねぇ…。(困) OS は RedHatLinux 7.1,コンパイラは GNUC 2.96(= GNUC++ 2.96), makedepend も gccmakedep も /usr/X11R6/bin/ というパスに在ります。
175 名前:デフォルトの名無しさん mailto:sage [02/11/27 17:49] じゃあ、処理速度は遅くなるけど、gcc/g++ の -M(または-MM)オプションを 使ってみたらどうかな。こいつは依存関係を標準出力に出すので、 リダイレクトしてファイルに落とす。そして、>>167 みたいに -include でインクルードしてやればよい。Linux ということは gmake を 使ってるわけだよね?
176 名前:デフォルトの名無しさん mailto:sage [02/11/27 18:03] >>174 > やはり後半で御指摘の「根本的に環境がおかしい」んですかねぇ…。(困) > OS は RedHatLinux 7.1,コンパイラは GNUC 2.96(= GNUC++ 2.96), > makedepend も gccmakedep も /usr/X11R6/bin/ というパスに在ります。 rpm -qf /usr/X11R6/bin/{makedepend,gccmakedep} の結果は?
177 名前:みな [02/11/27 18:39] >>175 さん 私も,>>167 さんが後半で書かれてた方法が一番良さそうに思えたんで, gcc の man とか色んな関連ウェブページとか見ながら,習得中です。 (スミマセン。発展途上なもんでして…。) ちなみに,make も gmake も /usr/bin/ というパスに在って, 使ってるのは一応 gmake の方なんですけど,試しに make の方に変えてみても, (少なくとも気付いた範囲内では)結果は何も変わらない様です。 >>176 さん rpm -qf /usr/X11R6/bin/{makedepend,gccmakedep} してみたら,―― XFree86-devel-4.0.3-5 XFree86-devel-4.0.3-5 ――と出てきました。 ゴメンナサイ。rpm というモノ自体,>>176 を読んで今初めて知った次第で…。(汗 なるほど,「rpm is a powerful package manager」ですか。 でも,その前に使う人が powerful に成長しないと,宝の持ち腐れですね…。(自嘲
178 名前:176 mailto:sage [02/11/27 19:04] >>177 > XFree86-devel-4.0.3-5 もう4.2.1とか出てるのでバージョンを上げてみては。 全部上げるのがいやなら、 rpm -Uvh --excludepath /usr/X11R6/lib --excludepath /usr/X11R6/include \ --excludepath /usr/X11R6/man ${XFree86develRPM} とか、 cd / rpm2cpio ${XFree86develRPM} | cpio -i usr/X11R6/bin/{makedepend,gccmakedep} とか。
179 名前:デフォルトの名無しさん [02/11/28 00:42] happysize.com/techie/autodep/ ↑こんなんもあるぜ。 漏れはソースを俺様カスタマイズしてつかってるぜ。
180 名前:みな [02/11/28 14:08] >>178 さん [mina@localhost mina]$ rpm -Uvh --excludepath /usr/X11R6/lib --excludepath /usr/X11R6/include --excludepath /usr/X11R6/man ${XFree86develRPM} rpm: インストールのためのパッケージがありません [mina@localhost mina]$ cd / [mina@localhost /]$ rpm2cpio ${XFree86develRPM} | cpio -i usr/X11R6/bin/{makedepend,gccmakedep} error: read failed: Success (0) error reading header from package cpio: premature end of archive [mina@localhost /]$ ――な感じでした。だめぽ…? いや,そもそもシス管に訊けとかインストールした人に頼めとか, 心中でツッコみながら私の書き込み読んでる方々も少なくないと思うんですけど, この環境構築した人自体が,雑誌とか入門書とかと首っ引きで何とか構築したとゆー, ある意味“発展途上”な人なもんで…。(勿論,私よりは“上”ですけど。) >>164 で「周りの人に訊いても――(中略)――サッパリわかんなかったんで」 と書いたのは,そんな訳だったんです。(類は友を呼ぶ…?)
181 名前:みな [02/11/28 14:08] >>179 さん あっ,その "autodep" って,色々 Google 検索してた中で見た記憶が…。 リンク先あちこち紫色になってるし。 コレって,一企業(株式会社ハッピーサイズ)が御厚意で無償提供して下さってる, 一フリーソフトですよね? ですから,あまり標準的・一般的じゃないユニークなモノに 最初っから頼りきっちゃうと,後々何かマズいかなーとか, (折角習熟してもツブシが利かないとか…?) 何と無く思ってしまって,初めて見た時はそのまま流してしまってました。 やっぱ,いいですか。"autodep"。 後でダウンロードして,ちょっと試してみますね。 情報,有り難う御座います。
182 名前:176 mailto:sage [02/11/28 14:42] >>180 > [mina@localhost mina]$ rpm -Uvh --excludepath /usr/X11R6/lib --excludepath /usr/X11R6/include --excludepath /usr/X11R6/man ${XFree86develRPM} > rpm: インストールのためのパッケージがありません > [mina@localhost mina]$ cd / > [mina@localhost /]$ rpm2cpio ${XFree86develRPM} | cpio -i usr/X11R6/bin/{makedepend,gccmakedep} > error: read failed: Success (0) > error reading header from package > cpio: premature end of archive ${XFree86develRPM}はDLしてきたXFree86-develのRPMパッケージのパス名。 (余裕ができたら)UNIX関連の入門書を嫁。
183 名前:デフォルトの名無しさん mailto:sage [02/12/03 20:14] gcc -MMしろ
184 名前:デフォルトの名無しさん mailto:vxee [02/12/08 02:46]
185 名前:デフォルトの名無しさん mailto:nnbb [02/12/08 02:47]
186 名前:デフォルトの名無しさん [02/12/10 16:07] 下のように、複数のターゲットがある依存関係でコマンドに引数が必要な場合 どう記述したらよいのでしょうか? $(AFILES) file1.a file2.a file3.a $(BFILES) $(AFILES:.a=.b) $(CFILES) $(AFILES:.a=.c) %.b %.c : %.a $(CMD) -o1 file1.b -o2 file1.c file1.a $(CMD) -o1 file2.b -o2 file2.c file2.a …
187 名前:デフォルトの名無しさん mailto:sage [02/12/10 16:10] >>1 中身はまだ読んでないけど、スレタイ気に入った。w
188 名前:186 [02/12/10 16:11] 書き忘れましたが、GnuMakeです。
189 名前:デフォルトの名無しさん [02/12/10 16:12] .,, \ヽ--___ \ 丶---ヽ___ .゙\ ク ~~> クソスレに認定されました \ ソ / .\ ノ \ / .\/ .\ \ .\ ,,\ .″ ゙》 __., イ,, 》li,_ ill! i;l;lllllz,lll;lllllll;lllllly .:llllllll;llllllllllll;;ll;||llllllllll} .il||l|lllllllllllllll|《lllll|lly《アlz .、 zz,、 ._ノレ;llllllll|;llllllliilllllllllllllllllllllyuyll;ミミ″ .''゙゙∨ 」lllllllllllllllllllllllllllllllllllllllllll ゙巛,厶yyv》llll! {lllllllll厂lllllllll|》lllllllllllllllly、 ,illllllllllllllllli;;ll|y .、.,,_ 《;|《llllll;lllli;llllllll;|lllllllllllllllllll|lli. .zllllllll;《lll|《lllllllllllllllizy,lllz. _yyyyr|》 ,u,,_ .rlllllllllllllllllllllllllllllll厂リllllリlll!,」llllll「リll;lllllll;;llllllllllllllllllll;||lllllllllllllll;lllllllll l;lll;l;yu.,,lllz:.;..:villlllllllllllllllllll|》llllllll| uilllll|illlllノ|ll|゙」zyllllll;ll|;lllllllllll;l|リllllllllllll;llllllllllllllllllll lll|!illlllllllll|ll|i;llllllllllllllllllllllllllllilllllllllllllllllllllllllllllll|lllll|,|lllllllllllllll|》;ll《|「.vuilllll|《liiilll|フ《llllllll lllllllllllllllllllllllll|《lllllllllll;;llllllllllllllll;llllllllllllllllllllll|)|《;lllllllllllllllllllllllllllllllll;lll;lllll;》([;lllllllllllllllllll
190 名前:デフォルトの名無しさん mailto:sage [02/12/10 17:46] >>186 マルチかよ!
191 名前:デフォルトの名無しさん mailto:age [03/01/08 18:42] make makes me mad.
192 名前:IP記録実験 mailto:IP記録実験 [03/01/08 21:19] IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l >>27 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。
193 名前:デフォルトの名無しさん mailto:sage [03/01/09 02:44] >>598 訴えられても「誣告ですよ」と返せる様にソース固めて叩きゃ良いじゃん。 荒らさなきゃ良いじゃん。
194 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:27] qb.2ch.net/test/read.cgi/accuse/1042013605/114-119 /ヽァ/ヽァ
195 名前:デフォルトの名無しさん mailto:sage [03/01/09 04:09] >>373 ありがと
196 名前:デフォルトの名無しさん mailto:a [03/01/09 13:40] 職場、学校、座敷牢から気兼ねなく書き込みでける ってゆってたのにー プンスカ!!
197 名前:デフォルトの名無しさん [03/01/09 14:50] 最高裁への上告は認められなくなったから、これで事実上判決確定だよ。 逆転も何もないって。 勢いで上告なんかしても一発で上告却下(門前払い)だよ。 二審も一審を支持。これに対して上告しようにも、 刑事訴訟と同様、自由に上告できるってもんでもないのです。 民事訴訟法312条 (上告の理由) 1項 「上告は、判決に憲法の解釈の誤りがあること その他憲法の違反があることを理由とするときに、することができる。」 www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
198 名前:デフォルトの名無しさん mailto:sage [03/01/09 17:32] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 138720人 発行日:2003/1/9 年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。 そんなわけで、年末に予告したIP記録ですが実験を開始しています。 「2ちゃんねる20030107」 こんな感じで各掲示板の最下部に日付が入ってるんですが、 20030107以降になってるところはログ記録実験中ですー。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
199 名前:デフォルトの名無しさん mailto:sage [03/01/09 23:22] >736 らしいね ID:WcTtLBwB も少しまとめてレスする癖付けれ
200 名前:デフォルトの名無しさん mailto:sage [03/01/10 01:11] マンコとかきまくれるのは2chだけ!!ということに変わりはない
201 名前:デフォルトの名無しさん mailto:sage [03/01/10 09:47] 色々、俺を過大評価してる様ですが (現時点で全世界規模のインテリ層に私がシンパいるとか 笑 ありえないって。) 俺一人で突き進む事が基本なんですが(てか十分。命だけ足りないけど。) そういった事は、貴方方には大きいけど俺には小さいです。 「人生」ってありますね。 私が直接的な報復手段を選ばずに我慢したのもそういった理性があるからです。 「目先で」シャレにならない、からです。 大体察しているでしょう。 では5分後か昼に掛けます。
202 名前:デフォルトの名無しさん mailto:sage [03/01/10 10:58] メルマガまだ?
203 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:43] 最高裁への上告は認められなくなったから、これで事実上判決確定だよ。 逆転も何もないって。 勢いで上告なんかしても一発で上告却下(門前払い)だよ。 二審も一審を支持。これに対して上告しようにも、 刑事訴訟と同様、自由に上告できるってもんでもないのです。 民事訴訟法312条 (上告の理由) 1項 「上告は、判決に憲法の解釈の誤りがあること その他憲法の違反があることを理由とするときに、することができる。」 www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
204 名前:デフォルトの名無しさん mailto:sage [03/01/10 12:12] (;´(Å)`) <・・・。
205 名前:デフォルトの名無しさん mailto:sage [03/01/10 13:03] 電気店のパソコン売り場から2ちゃんにカキコする奴が増えるんだろうなあ
206 名前:デフォルトの名無しさん mailto:sage [03/01/10 15:26] (・∀・)クスクス
207 名前:デフォルトの名無しさん mailto:sage [03/01/10 16:53] 何が変わるんですか。
208 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:15] >書き込みの質があがるんでつか 質の低い書きこみが減って、結果的に質の平均があがるのではないかと、、、
209 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:20] >>704 「おはよう一直線」という番組で、生島ヒロシのでるやつ。 www.tbs.co.jp/radio/format/ikushima.html 宮崎哲「2chでは嘘のことをネタというんですけどね、これはネタですね」 「あまり真に受けて騒ぐのもどうか」とも、 おまえらのスポンサーは真に受けてひろゆきに6億円も損害賠償請求して るじゃん。とか思ったわけだけど
210 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:38] 実験
211 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:46] 我ながら好き勝手にほざいてしまいますた・・(汗 もし実現しても回線細そうですしね。。。
212 名前:デフォルトの名無しさん mailto:sage [03/01/11 10:07] 公人と私人の違いってやつ 俺は嫌いだけどねこの分け方
213 名前:デフォルトの名無しさん mailto:sage [03/01/11 10:40] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 139038人 発行日:2003/1/10 なにやら、連日メルマガだしてるひろゆきです。 そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、 全部のサーバに入れてみました。 重くなって落ちたりしてもご愛嬌ってことで。。。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
214 名前:デフォルトの名無しさん mailto:sage [03/01/11 11:33] ひろゆきが嫌韓に否定的なのを忘れているようで。 IPを総連に売られたら、どうなると思う?
215 名前:デフォルトの名無しさん mailto:sage [03/01/11 12:07] 死ねよ馬鹿ども
216 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:08] まぁお前、素人は無難な書き込みしてなさいってこった。
217 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:38] 人生をゲームにしちまったひろゆきはオレより3倍バカ バカになりきるのは(人間として)難しい
218 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:23] 2ちゃん閉鎖したら、他のインターネット掲示板が荒れたり、DQNな事件が増える
219 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:30] 逆に立てて欲しくなかったんだが(w
220 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:32] おう、おめーら。 まあな、今年は俺の年なわけだがどうよ? っていうかなぁ、俺の毛毟り取るのはまあ、許してやるよ。 メシくわせてもらってるからな。 でもな、紙とか食わせるのはマジで勘弁してくれよ。 俺ァな、山羊じゃねぇんだよ。 あんなひつじの出来そこないと一緒にしないでくれよ。 だって山羊だぜ、山羊。 俺なんか十二星座ってだけじゃなくて干支でもあるんだよな。 だけど、山羊見ろよ、山羊。 黄金聖闘士(ゴールドセイント)止まりだぜ? あんなのと一緒にしてもらいたかぁーねーよな。 っていうか、俺を殺せるもんならやってみろよ。 俺はいつどこでも誰の挑戦でも受けるぞ?
221 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:43] 日本人・日本在住・男・童貞 ここまではIPから特定しますた。
222 名前:デフォルトの名無しさん mailto:sage [03/01/12 10:51] ななも殺人教唆で逮(ry
223 名前:デフォルトの名無しさん mailto:sage [03/01/12 10:53] どこがどう恥ずかしいんだい? それを説明しないお前は説得力ゼロだが。 加えて君の無能さも証明しているな。
224 名前:デフォルトの名無しさん mailto:sage [03/01/12 21:26] それは単に業者への制裁措置じゃ?
225 名前:デフォルトの名無しさん mailto:sage [03/01/12 21:29] 通ることもあるわな。 「見なかった」といわれて終わるのは証明の問題であって実体の問題ではない。
226 名前:デフォルトの名無しさん mailto:sage [03/01/12 21:40] あった
227 名前:山崎渉 mailto:(^^)sage [03/01/13 19:01] (^^)
228 名前:デフォルトの名無しさん mailto:sage [03/01/13 23:31] ワラタ
229 名前:山崎渉 mailto:(^^)sage [03/01/15 18:14] (^^)
230 名前:山崎渉 mailto:(^^)sage [03/01/23 22:12] (^^)
231 名前:デフォルトの名無しさん mailto:age [03/01/24 10:20] あ、もちろん GNU Make の話ね。
232 名前:デフォルトの名無しさん [03/01/31 20:12] make age
233 名前:デフォルトの名無しさん mailto:sage [03/02/04 01:13] 頼むからMakefileにmake love仕込んでソース収めるのやめて。
234 名前:デフォルトの名無しさん mailto:sage [03/02/04 17:44] >>231 どの話?
235 名前:デフォルトの名無しさん [03/02/07 23:40] たくさんサブディレクトリがあるとしてのお話です。 DIR_LIST:=たくさんサブディレクトリ ARC_LIST:=$(addsuffix /lib.a,$(DIR_LIST)) さて、このARC_LISTを、それぞれのディレクトリ内のすべての.oファイルから作るとして、 はじめに思いついたのが、 $(ARC_LIST) : %/lib.c : $(wildcard %/*.o) というやつだったのですが、このwildcardの中の%がどうやら展開されないようです。 foo/lib.c : $(wildcard foo/*.o) こうすれば一応依存関係は作れるんですが、DIR_LISTはmakeが起動されるまでわかりません。 なんか解決法はないですか?
236 名前:デフォルトの名無しさん [03/02/08 01:49] >>235 ARC_RULE:=$(DIR_LIST:%=.%.arc_rule) .%.arc_rule: @echo '$*/lib.a: $$(wildcard $*/*.o)' > $@ @echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@ clean:: rm -f $(ARC_RULE) include $(ARC_RULE)
237 名前:デフォルトの名無しさん [03/02/08 01:57] >>235 まちがいがあったので修正版。 ARC_RULE:=$(DIR_LIST:%=.%.arc_rule) .%.arc_rule: @echo '$*/lib.a: $$(wildcard $*/*.o)' > $@ @echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@ clean:: rm -f $(ARC_RULE) ifneq ($(MAKECMDGOALS),clean) include $(ARC_RULE) endif
238 名前:235 mailto:sage [03/02/08 02:14] >>236 あーいっこづつ別のファイルに出せばいいんですね。 そういうやつを一個のファイルに出してみて、「いける?」とか思って、 「あーでもこのファイル更新するタイミングがわからん」とか思ってあきらめてました。 いけそうですね。まだ試せないけど。ありがとーデス。
239 名前:236 [03/02/08 18:43] >>235 期待通りの動作になるかもしれませんが、wildcardで 全部アーカイブにするのは作り方としてよくないとおもいます。 (ソースコードを生成するためのプログラムのオブジェクトまで 拾ってしまう可能性がある。) lib.aにするところまでサブディレクトリのMakefileで記述したほうが いいとおもいます。
240 名前:デフォルトの名無しさん mailto:sage [03/02/08 18:52] >>239 > (ソースコードを生成するためのプログラムのオブジェクトまで > 拾ってしまう可能性がある。) それはまた別のディレクトリにすべきなんじゃないの? > lib.aにするところまでサブディレクトリのMakefileで記述したほうが > いいとおもいます。 ともあれこれには同意。
241 名前:235 mailto:sage [03/02/08 19:30] > lib.aにするところまでサブディレクトリのMakefileで記述 そうした場合には、ディレクトリの数だけ無条件でmakeを起動してしまうわけですよね。 実は、なんとかそれを避けれないかということで、いろいろやって>>235 のようになったのですよ。
242 名前:236 [03/02/09 00:44] >そうした場合には、ディレクトリの数だけ無条件でmakeを起動してしまうわけですよね。 >実は、なんとかそれを避けれないかということで、いろいろやって>>235 のようになったのですよ。 ライブラリの元になるオブジェクトはいつ作るのでしょうか? wildcardでマッチさせようとしているので、makeを起動する前にすでに オブジェクトができているはずです。だとしたけ結局makeを 複数回起動しているのでは?
243 名前:235 mailto:sage [03/02/09 00:56] >>242 あ、すんません、実際にwildcardをかけるのは.cとかなんですよ。 foo/lib.c : $(patsubst %.c,%.o,$(wildcard foo/*.o)) ってな感じです。wildcardが適用されない問題に絞るために端折ってました。
244 名前:236 [03/02/09 01:10] 235で$(wildcard foo/*.o)の部分は$(wildcard foo/*.c)でしょうね。 237の一部差し替え。 .%.arc_rule: @echo '$*_SRC:=$$(wildcard $*/*.c)' > $@ @echo '$*_OBJ:=$$($*_SRC:%.c=%.o)' >> $@ @echo '$*/lib.a: $$(*_OBJ)' >> $@ @echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@
245 名前:236 [03/02/09 01:18] しまった。また間違いがありました。 .%.arc_rule: @echo '$*_SRC:=$$(wildcard $*/*.c)' > $@ @echo '$*_OBJ:=$$($*_SRC:%.c=%.o)' >> $@ @echo '$*/lib.a: $$($*_OBJ)' >> $@ @echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@ @echo 'clean::' >> $@ @echo ' rm -f $$($*_OBJ)' >> $@
246 名前:235 mailto:sage [03/02/09 01:20] >>244 どうも。 仕事キッチリなお方ですな。
247 名前:デフォルトの名無しさん mailto:sage [03/02/09 13:31] >>236 質問! > ARC_RULE:=$(DIR_LIST:%=.%.arc_rule) っていったい何をやっているの?
248 名前:235 [03/02/11 00:36] 上手くいきましたよ。 さて、後はソースファイルが削除されたときの・・・。 >>247 ARC_RULE:=$(patsubst %,.%.arc_rule,$(DIR_LIST)) ↑の、ちょっと短く書ける書式。
249 名前:247 mailto:sage [03/02/11 11:58] >>248 あ、そっか。ふだんはこの書き方を使わないから悩んじゃったよ。ありがと。
250 名前:デフォルトの名無しさん mailto:sage [03/02/11 13:39] >>248 こんなんでどうよ。 .%.arc_rule: @echo '$*_SRC:=$(wildcard $*/*.c)' > $@ @echo '$*_OBJ:=$$($*_SRC:.c=.o)' >> $@ @echo '$*/lib.a: $$($*_OBJ)' >> $@ @echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@ @echo 'ifneq($*_SRC,$$(wildcard $*/*.c))' >> $@ @echo '$@: .force' >> $@ @echo 'endif' >> $@ @echo 'clean::' >> $@ @echo ' rm -f $$($*_OBJ)' >> $@ .PHONY: .force
251 名前:235 mailto:sage [03/02/11 17:10] >>250 > ifneq($*_SRC,$(wildcard $*/*.c)) ぱっと見、これが常に偽になりそうです・・・。 > $@ : .force これは、$*/lib.a : .force ですかね。 ちょっと修正して、こんな感じになるかなぁ?(↓見やすくするための擬似表記です) $*_SRC:=$(wildcard $*/*.c) $*_OBJ:=$($*_SRC:.c=.o) $*/lib.a : $($*_OBJ) ifneq($*_OBJ,$(wildcard $*/*.o)) $*/lib.a : .force endif
252 名前:235 mailto:sage [03/02/11 18:16] だめだ、対応するソースの無くなった.oを消さなきゃ。
253 名前:デフォルトの名無しさん [03/02/12 00:38] makeのかわりにjam使ってる人いますか? ↓jam www.perforce.com/jam/jam.html
254 名前:デフォルトの名無しさん mailto:sage [03/02/12 08:07] >>251 > > ifneq($*_SRC,$(wildcard $*/*.c)) > ぱっと見、これが常に偽になりそうです・・・。 なんで? $*_SRCと右の$(wildcard $*/*.c)はワイルドカードが展開されるタイ ミングが違うはずだが。 > > $@ : .force > これは、$*/lib.a : .force ですかね。 ちがう。ソースが追加/削除されたら.arc_ruleを書き換えたいんだろ?
255 名前:235 mailto:sage [03/02/13 00:57] >>254 ごめんなさい。完全に勘違いしてました。 試させてもらいました。 ソースを削除したとき、.arc_ruleは更新されますが、 lib.aの中に削除されたソースから生成した.oが含まれたままになってしまい、 リンク時に有効な.oファイルとして認識されてしまいます。 削除されたソースファイル名を認識して、対応する.oファイルを削除し、 lib.aからも削除するようにしないいといけないのですが、 既に存在しないファイルに対してmakeがアクションをおこすような指示をどう書けばいいのかが 思いつきません。
256 名前:デフォルトの名無しさん mailto:sage [03/02/13 01:59] >>255 そうなるとたしかに$*/lib.aは強制的に作り直さなきゃだな。 @{ \ echo '$*_SRC:=$(wildcard $*/*.c)'; \ echo '$*_OBJ:=$$($*_SRC:.c=.o)'; \ echo '$*/lib.a: $$($*_OBJ)'; \ echo ' @rm -f $$@'; \ echo ' $$(AR) $$(ARFLAGS) $$@ $$?'; \ echo ' $$(RANLIB) $$@'; \ echo 'ifneq($*_SRC,$$(wildcard $*/*.c))'; \ echo '$@ $*/lib.a: .force'; \ echo 'endif'; \ } > $@
257 名前:235 [03/02/14 01:31] >>256 そいつだと、%.arc_ruleが作り直された段階で $*/lib.a: .force の関係がキャンセルされてしまうみたいです。 なので、%.arc_ruleの出力時に$*/lib.aを削除するようにしました。 最終的にはこのようになりまして、(↓全角スペースがタブのかわり) .PHONY : .force_update $(ARC_LIST) : %/lib.a : $(AR) $(ARFLAGS) $@ $? ARC_RULES:=$(addsuffix /.arc_rule,$(DIR_LIST)) $(ARC_RULES) : %/arc_rule : @{ \ echo '.$*_SRC:=$(wildcard $*/*.c)' ;\ echo '.$*_OBJ:=$$(.$*_SRC:.c=.o)' ;\ echo '$*/lib.a : $$(.$*_OBJ)' ;\ echo 'ifneq ($$(.$*_SRC),$$(wildcard $*/*.c))' ;\ echo '$@ : .force_update' ;\ echo 'endif' ;\ } >@ ;\ $(RM) -f $*/lib.a include $(ARC_RULES) 動作は良好です。 ソースの追加、削除、引越しを完全に追跡してくれます。 快適です。 助言くださったみなさま、ありがとうございました。 優良スレage
258 名前:デフォルトの名無しさん [03/02/14 01:32] SRCS=`find *.c` INCS=`find *.h`
259 名前:デフォルトの名無しさん mailto:sage [03/02/14 15:10] >>257 > >>256 > そいつだと、%.arc_ruleが作り直された段階で > $*/lib.a: .force の関係がキャンセルされてしまうみたいです。 > なので、%.arc_ruleの出力時に$*/lib.aを削除するようにしました。 $*/lib.aを%.arc_ruleに依存するようにするのはどうよ。
260 名前:デフォルトの名無しさん mailto:sage [03/02/15 01:55] >>259 対応するソースの無くなったオブジェクトがlib.aに残る問題を考えると、 あのタイミングで削除してしまったほうが効率もよく、すっきりします。
261 名前:デフォルトの名無しさん [03/02/23 00:46] Makefileを手書きしたいのですがSolaris, Linux(Redhat, Debian), CygwinをMakefile内で自動判別する方法はないですか?
262 名前:デフォルトの名無しさん mailto:sage [03/02/23 00:59] 環境変数OSTYPEはだめか?
263 名前:デフォルトの名無しさん mailto:sage [03/02/23 01:05] >>262 OSTYPEでうまくいきそうですがLinuxは両方linux-gnuになってしまいます。 setやenvにはディストリビューションの情報はなさそうです。 両者の区別は可能ですか?
264 名前:デフォルトの名無しさん mailto:sage [03/02/23 01:09] >>263 サポートしているモノのうちのひとつを引数で受け取る仕様に汁。
265 名前:デフォルトの名無しさん mailto:sage [03/02/23 09:51] Linux,CygwinではGNUmakefileをつくって、その中で SYSTEM := $(...) # ディストリビューションを見分けるプログラムを呼ぶ。 include Makefile
266 名前:デフォルトの名無しさん mailto:sage [03/02/23 09:51] >>265 > SYSTEM := $(...) # ディストリビューションを見分けるプログラムを呼ぶ。 しまった。$(shell ...)ね。
267 名前:山崎渉 mailto:(^^) [03/04/17 16:04] (^^)
268 名前:山崎渉 mailto:(^^)sage [03/04/20 03:54] ∧_∧ ( ^^ )< ぬるぽ(^^)
269 名前:デフォルトの名無しさん [03/05/26 21:53] GNU make 3.79 使ってます。 make の本(GNU make の本ではありません)に .SUFFIXES: と書くとサフィックスに関するデフォルトの設定をクリアできると書いてありましたが、 GNU make でやってみると何かデフォルトの設定も使われているようなんですね。 -r オプションは使わないとすると、 GNU make では Makefile にどう書けばいいんでしょうか? 実際に問題が発生した例) debug.cpp と debug ターゲットがある場合、 make debug とやると .cpp: サフィックスルールも適用されてしまう。
270 名前:デフォルトの名無しさん mailto:sage [03/05/26 21:58] unameじゃだめなの?
271 名前:デフォルトの名無しさん mailto:sage [03/05/26 22:00] あ、ごめん。なんでもない
272 名前:デフォルトの名無しさん mailto:sage [03/05/27 01:37] >>269 .PHONY ではなくて?
273 名前:269 mailto:sage [03/05/27 08:55] >>272 できました! ありがとうございました。
274 名前:山崎渉 mailto:(^^) [03/05/28 12:42] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
275 名前:デフォルトの名無しさん mailto:あげ [03/06/14 02:02] あげ
276 名前:デフォルトの名無しさん [03/06/20 09:07] cygwinのmakeで、コマンドラインが長すぎるときにエラーが出てしまいます。 同じコマンドラインでも、Windows98上ではエラーにならず、Windows2000では エラーになります。 エラーメッセージは make: *** [target] Error 255 というもので原因や対策がはっきりわかりません。 検索すると、よく知られた問題のようですが、根本的な解決方法は見つかりませんでした。 というわけで、 おしえて、えろいひと。
277 名前:デフォルトの名無しさん mailto:sage [03/06/20 13:16] >>276 解決法: コマンドラインの引数を少なくする ……しかないんじゃないの?
278 名前:276 mailto:sage [03/06/22 16:18] >>277 すでに動いていた環境でファイル数が増えたからエラーになったのです。 そんなわけで、簡単に引数は少なくできません。 cygwinスレにでも逝ってみます。
279 名前:山崎 渉 mailto:(^^) [03/07/15 10:44] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
280 名前:山崎 渉 mailto:(^^) [03/07/15 14:04] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
281 名前:デフォルトの名無しさん mailto:sage [03/07/23 21:24] 最近、Linux、Solarisの開発を始めた者です。 gmakeの質問させてください。 Linux上で $(DEPDIR)/%.d: $(SRCDIR)/%.cpp <tab>@[-e $(DEPDIR)] || mkdir $(DEPDIR) <tab>@$(CXX) -なんとか… って感じで動かしてたんですが、 Solaris8に移植してgmakeかけようとしたら /bin/sh: test: 引数が足りません。 とか言われてしまいます。 [-e $(DEPDIR)] でなんでつまづくかわかりません。 ご存知の方がいたら、教えてもらえないでしょうか
282 名前:デフォルトの名無しさん mailto:sage [03/07/24 13:22] >>281 自己レスです [がシェルコマンドとは気づかなかった Solarisのbin/shだと [-eが使えなかった模様 すいませんでした。
283 名前:デフォルトの名無しさん mailto:sage [03/07/24 17:53] あるだろ。 ttp://www.freebsd.org/cgi/man.cgi?query=test&sektion=1&apropos=0&manpath=SunOS+5.9 ところで[]の内側にほんとにスペース入れてないのか?
284 名前:デフォルトの名無しさん mailto:sage [03/07/24 21:27] >>283 いれてません。 bin/shで-eオプションがないようです。 bin/ksh じゃないと駄目みたいなんですが、 GUN makeってbin/shじゃないと駄目ってのはありませんでしたっけ?
285 名前:デフォルトの名無しさん mailto:sage [03/07/24 21:28] >>283 誤解を招くので追記(汗 全角スペースの意味でとりました。 半角は入ってます
286 名前:デフォルトの名無しさん mailto:sage [03/07/24 22:35] じゃ[ -d $(DEPDIR) ]は?
287 名前:デフォルトの名無しさん mailto:sage [03/07/25 12:45] >>286 「-d filename ファイル filename が存在し、ディレクトリであれ ば真。」 あぅ、こーいうものがあったんですね。 試してみます、ありがとうございました。
288 名前:デフォルトの名無しさん [03/07/27 19:15] clean: (TAB)rm *.o (TAB)rm *.a って書いたら *.o がない時点でエラーになっちゃって *.a が消されません みなさんはこういう時ってどうしますか? rm *.o *.a とかでしょうか?
289 名前:デフォルトの名無しさん mailto:sage [03/07/27 19:42] -rm rm -f *.o *.a
290 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:16] (^^)
291 名前:三村 mailto:sage [03/08/04 21:16] >>276 えろいひとかよっ!
292 名前:山崎 渉 mailto:(^^) [03/08/15 16:24] (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
293 名前:デフォルトの名無しさん [03/08/24 13:10] 大きいプロジェクトをmakeしていると、今どの程度makeが終わったのか分からなくて不安になるんですが 進捗を表示しつつmakeする方法ってありませんか?
294 名前:デフォルトの名無しさん mailto:sage [03/08/24 13:17] echo
295 名前:デフォルトの名無しさん mailto:sage [03/08/24 14:40] >>293 @を外す
296 名前:デフォルトの名無しさん mailto:sage [03/08/24 15:35] 希望が「完成率 30%」とかの表示だと、難しそうな気がする…
297 名前:デフォルトの名無しさん [03/09/14 13:55] 砂時計を使う。
298 名前:デフォルトの名無しさん mailto:sage [03/09/14 14:49] >>293 大きいプロジェクトならmakefile分割しなよ。 そうすれば望みもかなうし管理も楽になるから。
299 名前:デフォルトの名無しさん [03/09/14 14:51] date;make 後は、現在時刻と表示された時刻を見比べて、「どの程度」なのかを推測しろ。 できるよな? な?
300 名前:300 mailto:sage [03/09/16 23:50] この偉大なスレの300が数日間も放置されていようとはな。
301 名前:デフォルトの名無しさん mailto:sage [03/09/16 23:53] 出来れば300日間放置してほしかった
302 名前:デフォルトの名無しさん [03/09/18 17:58] すみません。FreeBSD の make で使える .for n in $(NAMES) .for v in $(VALUES) result-$(v)-$(n): foobar data-$(n) ./foobar $(v) < data-$(n) > result-$(v)-$(n) .endfor .endfor こういう構文を GNU make で書くにはどうすればいいんでしょうか? ループが一重なら % を使って書けるのですが、2つ変化する部分があると どう書いたらいいものか...
303 名前:デフォルトの名無しさん mailto:sage [03/09/19 06:28] 3.80から使えるeval(ttp://www.gnu.org/manual/make/html_node/make_87.html#SEC91)を使えば、 define RULE_TEMPLATE result-$(v)-$(n) : foobar data-$(n) ./foobar $(v) < data-$(n) > result-$(v)-$(n) endef $(eval $(foreach n,$(NAMES),$(foreach v,$(VALUES),$(RULE_TEMPLATE)))) と書けるみたい。(全角スペースはタブね)
304 名前:デフォルトの名無しさん mailto:sage [03/09/22 14:35] makeの次がantとはね・・・ この中間にある書きやすくて読みやすくて高機能なビルド支援ツールってないのかね。
305 名前:302 mailto:sage [03/09/22 17:44] >>303 おお、ありがと。 しかし、自分用の makefile ならいいけど、配布用だとまだ使うのは早いかな...
306 名前:303 mailto:sage [03/09/23 07:12] >>305 eval使わない場合は、 -include のファイルが更新対象になるのを利用して、 NAMES:=a b c VALUES:=1 2 3 RULE_FILE:=.rules $(RULE_FILE) : $(MAKEFILE) { \ $(foreach n,$(NAMES),$(foreach v,$(VALUES), \ echo 'result-$(v)-$(n) : foobar data-$(n)' ;\ echo ' ./foobar $(v) < data-$(n) > result-$(v)-$(n)' ;\ )) \ }>$@ -include $(RULE_FILE) と書けるみたい。(全角スペースはタブね)
307 名前:302 mailto:sage [03/09/24 01:29] >>306 おお、makefile を更新したら、ちゃんとルールファイルを更新してから include するんですね。これは使えそうです。どうも、ありがと。 # $(MAKEFILE) は自分で値を設定しておかないといけないみたいですね。
308 名前:デフォルトの名無しさん mailto:sage [03/10/06 03:34] ant
309 名前:デフォルトの名無しさん mailto:sage [03/10/19 12:42] giant-ant
310 名前:デフォルトの名無しさん mailto:sage [03/10/25 02:26] ム板の板歌 パスカルに逢わせてくれてありがとう〜♪
311 名前:デフォルトの名無しさん [03/10/25 04:51] どなたか教えてください。(SunOS) Makefile -------------------- FILE_1 = a.tmp FILE_2 = ${FILES_1:.tmp=.tmp2} FILE_3 = *.tmp FILE_4 = ${FILES_3:.tmp=.tmp2} all:: @echo ${FILES_1} @echo ${FILES_2} @echo ${FILES_3} @echo ${FILES_4} -------------------- 実行結果 > make a.tmp a.tmp2 a.tmp *.tmp2 FILES_4 でFILES_2 と同じ結果を得たいのですが、 思ったようにできません。 make のみで FILES_2 と同じ内容を FILES_4 に 設定することは可能でしょうか?
312 名前:デフォルトの名無しさん mailto:sage [03/10/30 22:43] さわやかSUN組
313 名前:デフォルトの名無しさん [03/11/04 03:00] GNU make の $(error ...) ってどのバージョンから使えるんですか?
314 名前:デフォルトの名無しさん [03/11/16 00:07] makeのスレなんて流行らないよ。 makeなんて初心者虐め、他文化虐め、異端者排除の大好きなUN*X厨の道具だもの。 その証拠にこのスレでは幾多の質問が無かった事のように流されてきたじゃない?
315 名前:デフォルトの名無しさん mailto:sage [03/11/16 00:52] makeを使うのに、 makefileを書く必要はないんです。 ただ単に、hello.cをコンパイルしたければ 「make hello」とか「make hellow.exe」と打つだけです。 何が難しいんですか? ...makefileを書かねばならんのは、 分割コンパイルをや非標準のライブラリの導入をする 中級者以上だけです。
316 名前:いなむらきよし [03/11/16 01:04] キケー!
317 名前:デフォルトの名無しさん mailto:sage [03/11/17 09:48] makefileもかけないでプログラマ気取りですか?
318 名前:デフォルトの名無しさん mailto:sage [03/11/17 12:44] 俺はMakefileしか書かないよ。
319 名前:デフォルトの名無しさん mailto:sage [03/11/17 13:00] 俺はGNUmakefileしか書かないよ。
320 名前:デフォルトの名無しさん mailto:sage [03/11/17 15:29] そのうち #!/usr/bin/make なんてスクリプトが書かれるのかな。嫌だな。
321 名前:デフォルトの名無しさん mailto:sage [03/11/17 18:05] 書いたことあるよ。
322 名前:デフォルトの名無しさん mailto:sage [03/11/17 22:38] make って微妙に挙動が違うから, GNU make 専用に Makefile を書くか, いろんな make で扱えるように Makefile を書くかで, 面倒くささが 変わってきて, ちょっといや.
323 名前:デフォルトの名無しさん mailto:sage [03/11/17 22:40] make って微妙に挙動が違うから, GNU make 専用に Makefile を書くか, いろんな make で扱えるように Makefile を書くかで, 面倒くささが 変わってきて, ちょっといや.
324 名前:デフォルトの名無しさん mailto:sage [03/11/17 22:40] gmake,pmake,nmake 他には?
325 名前:デフォルトの名無しさん mailto:sage [03/11/17 23:10] 余計なこと書きすぎるとポータビリティーがないのよ。 7行プログラムじゃないけど、必要最小限、極力簡潔に書くの。
326 名前:デフォルトの名無しさん mailto:sage [03/11/18 02:10] 俺はgmakeで統一。 Windowsでもcygwin/binにパス通して使ってる。 nmakeは名前違うからいいけどBorlandのはまんまmakeで激しく迷惑だな。
327 名前:デフォルトの名無しさん mailto:sage [03/11/18 10:03] >>326 同位。 あんな変態的なのがmakeを名乗るな。 しょうがないのでこういうスクリプトをbmakeとつけて使ってる。 #!/bin/sh bccdir=`type bcc32` bccdir="${bccdir#bcc32 is }" bccdir="${bccdir%/*}" if [ -z "$bccdir" ]; then echo "$0: bcc32 not found" 1>&2 exit 1 fi if [ "x$1" = x-C ]; then cd "$2" shift 2 fi PATH="$bccdir:$PATH" exec make "$@"
328 名前:デフォルトの名無しさん mailto:sage [03/11/19 00:52] WideStudioのmingw(GCC WIN32版)とC++Builder6も衝突。 makeをgmake.exeにリネームするとmakeを起動するmakefileが 通らんので、環境変数からmingw32-make.exeのあるディレクトリを 検索し、PATHの中身を並べ替えてexecvp("make.exe"...する wmake.exeを書かされた。 void rebuild(std::vector<std::string> &buff, const char *name, char slash = '\\') { for (std::vector<std::string>::iterator it = buff.begin(); it != buff.end(); it++) { struct stat st; if (stat((*it + slash + name).c_str(), &st)) { ; /* ignore:win32-execvpは存在しないディレクトリもPATHに書いていい */ } else { std::string s = *it; buff.erase(it); buff.insert(buff.begin(), s); return; } } throw std::runtime_error(std::strerror(ENOENT)); }
329 名前:デフォルトの名無しさん mailto:sage [03/11/19 01:01] 書かされたって仕事でWideStudio使ってるのか?
330 名前:デフォルトの名無しさん mailto:sage [03/11/19 03:22] >>329 仕事じゃないよ。でも後で使うつもり。 低機能だけどMFCやVCLよりシンプルで使うのがラクだからね。
331 名前:デフォルトの名無しさん mailto:sage [03/11/21 12:38] windowsでmakefileなんか書くなバカ
332 名前:デフォルトの名無しさん mailto:sage [03/11/22 13:44] >>331 5年ほど前、100m離れた自席とマシン室の間往復するのが面倒で、 自席のPCにCygwin入れてマシン室のサーバ機からtelnetでログイン、 nmake叩いてコンパイル、できたファイルをFTP GETとかやってた。 あの頃はTerminal Serviceがまだ標準じゃ無かったんで、nmake マンセーだったよ。
333 名前:デフォルトの名無しさん mailto:sage [03/11/24 14:07] いまはリモート接続とかあるけどね
334 名前:デフォルトの名無しさん [03/11/30 07:18] Cygwinのmakeで OSTYPE=$(shell echo $$OSTYPE) とやってもOSTYPEが空のままなんだけどどうすればいいの? bashでecho $OSTYPEだとcygwinって表示されるし linuxでは普通にOSTYPE=linux-gnuがセットされるのに。
335 名前:時代錯誤 mailto:sage [03/11/30 07:33] javaならxmlで記述するからな〜。makeかぁ、懐かしいね〜隔世の感・・・
336 名前:デフォルトの名無しさん mailto:sage [03/11/30 10:31] >>335 お前みたいなのがJavaの品格を貶めているんだよ?わかってる?
337 名前:デフォルトの名無しさん mailto:sage [03/11/30 12:58] >>328 > makeをgmake.exeにリネームするとmakeを起動するmakefileが通らんので、 Makefileの書き方が悪い。$(MAKE)を使うべき。
338 名前:デフォルトの名無しさん mailto:sage [03/11/30 19:10] make allとかやったときサブのmakefileにall渡すのはどのマクロ?
339 名前:デフォルトの名無しさん mailto:sage [03/12/01 00:03] >>338 普通にターゲットだから $@ の模様。
340 名前:デフォルトの名無しさん mailto:sage [03/12/02 01:39] GNU Make だと MAKECMDGOALS つーのもあるが >>311 > FILE_3 = *.tmp これも GNU Make だと FILE_3 := $(wildcard *.tmp) かな? キモは ":=" を使って、その場で展開しておくこと。
341 名前:デフォルトの名無しさん mailto:sage [03/12/02 20:33] >>340 > キモは ":=" を使って、その場で展開しておくこと。 ををっ、腹ショー!!
342 名前:デフォルトの名無しさん mailto:sage [03/12/06 15:00] make debugってやったらターミナルだとgdb,Xが起動していたらGUIデバッガを起動する。 というのをやりたいんですが、どうやって判別すればいいですか?
343 名前:デフォルトの名無しさん mailto:sage [03/12/06 22:30] >>342 X 上で走っているターミナルの場合はどうすんねん、ってのは揚げ足とりだよなぁ。 とりあえず環境変数 DISPLAY が設定されているか否かで判別すれば?
344 名前:デフォルトの名無しさん mailto:sage [03/12/08 18:11] DEBUGGER := $(if $(DISPLAY),xxgdb,gdb) debug:; $(DEBUGGER) $(TARGET)
345 名前:デフォルトの名無しさん mailto:sage [03/12/17 23:02] 前から思ってたんだけど、makeなんて新しいプログラム用意するんじゃなくて、 シェルスクリプトのライブラリという形で提供すれば良かったんじゃないの? 当時の貧弱な計算機環境だと、巨大なシェルスクリプトが重荷になったのかも しれないけどさ。新しく文法覚えてツールを使うっていうのは、当時の利用技能の 高いユーザにとっても面倒なことだったと思うけどなあ。
346 名前:デフォルトの名無しさん mailto:sage [03/12/18 01:01] >>345 チンパンジーのアイちゃんですか?
347 名前:デフォルトの名無しさん mailto:sage [03/12/20 15:20] >>8 make: don't know how to make love
348 名前:デフォルトの名無しさん [04/02/14 01:54] make は好きなんで age てみたり. ところで, Makefile で使う変数名で慣用的なものってどんなのがありますか. CC, CXX, CFLAGS, LDFLAGS, LIBS あたりはみんな普通に使うんじゃないかと 思うのですが.
349 名前:デフォルトの名無しさん mailto:sage [04/02/14 02:05] mingwのgmakeはUNIX同様に実行ファイルにサフィックス無しを デフォルトにしてるんで、ターゲットの日付を見てくれましぇん。 なんでこんな変な仕様にしたんだろ。 おきて破りで環境変数MAKEFILES=C:/gcc/etc/make.defsをやってる。 .SUFFIXES:.exe .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \ .mod .sym .def .h .w .ch .web .sh STDLDFLAGS = -Wl,-LC:/gcc/lib .c.exe: $(CC) $(CFLAGS) -o $@ $< $(STDLDFLAGS) $(LIBS) .cc.exe: $(CXX) $(CXXFLAGS) -o $@ $< $(STDLDFLAGS) $(LIBS)
350 名前:デフォルトの名無しさん mailto:sage [04/02/14 02:21] makeはわかるけどconfigureの書き方がわからない
351 名前:デフォルトの名無しさん mailto:sage [04/02/14 15:35] >>350 さすがに configure 直書きとかじゃないよな? Autoconf 使ってるのなら↓からぱくってくるなり参考にすればいいんじゃないかな。 ttp://www.gnu.org/software/ac-archive/htmldoc/index.html
352 名前:デフォルトの名無しさん [04/03/25 02:35] ルールのコマンドを実行するシェルの環境変数をmakefile内で設定することはできますか? 設定したい環境変数は複数あって、それらをすべてのルールのコマンドに反映させたいです。
353 名前:デフォルトの名無しさん mailto:sage [04/03/25 06:14] >>348 make -np | grep "="
354 名前:デフォルトの名無しさん [04/03/30 17:50] MSYS + MinGW なんですが、 コンパイルにかかった時間を簡単に計るのは、どうやったらいいですか? 今は、 all: date target.exe date: date target.exe: target.cpp コンパイル date みたいにしてます。
355 名前:デフォルトの名無しさん mailto:sage [04/03/30 17:57] >>354 ストップウォッチ
356 名前:デフォルトの名無しさん mailto:sage [04/03/30 18:05] >>354 time
357 名前:354 mailto:sage [04/03/30 19:44] >>356 bin の中を探してたんで、そんなのがあるのを知りませんでした。 >>355 最初は使ってましたが、一分以上待つのはつらいです。 ありがとうございました。
358 名前:デフォルトの名無しさん [04/04/23 09:26] ターゲット、依存ファイル、文字列関数の扱う文字列など、 スペース区切りのリストの中にスペースを含む文字列(ファイル名)を 一つの要素として入れるにはどうしたらいいんでしょうか?
359 名前:デフォルトの名無しさん mailto:sage [04/04/23 10:31] my\ document みたいに\でエスケープする。
360 名前:358 mailto:sage [04/04/23 23:45] >>359 ありがとうございます。 ターゲット、依存ファイルには置けるようになりました。 ですが、文字列関数にわたすと複数の要素に分割されてしまいました。 このエスケープはどんな仕様で動作しているのでしょうか? マニュアルに書いてあります?
361 名前:デフォルトの名無しさん mailto:sage [04/04/24 14:40] 最近、環境を移行する作業してました。 かなり昔に作られたmakeファイルや、誰が作ったのかわからないmakeファイルを 新環境用に「感」で直しつつ作業してました。 ある程度manで調べたりしたけど、本当・・・難しい。 まともな日本語の本ってないんですかね?1にも書いてありますが。
362 名前:デフォルトの名無しさん mailto:sage [04/04/25 09:07] >>360 言語もわからんのに答えられるわけねーだろボケ!
363 名前:358 mailto:sage [04/04/25 13:29] >>362 言語?あ・・・。 すいません。GNU makeです。
364 名前:デフォルトの名無しさん [04/05/11 13:36] SRCS=$(shell ls *.c) とやると.cのファイルが全く無い場合 >そのようなディレクトリやファイルはありません。 というエラーメッセージが表示されてしまいます。 メッセージを出力しないようにするにはどうすればいいですか?
365 名前:デフォルトの名無しさん mailto:sage [04/05/11 14:08] >>364 SRCS=$(shell ls *.c 2>/dev/null) は使いたくないか?
366 名前:デフォルトの名無しさん mailto:sage [04/05/11 22:12] ふつうは、$(shell echo *.c) か $(wildcard *.c) だろ
367 名前: [04/05/21 15:56] makefileって難しいです 質問ですが、 LINUXでg++でコンパイルするmakefileを 作ったんですが、 エンディアンをビッグ<−>リトルを 切り替えられるような方法を教えてほしいのですが CFLAGに設定するようなものなのでしょうか?
368 名前:デフォルトの名無しさん mailto:sage [04/05/21 16:29] >>367 もし,Makefileを手で書いてるなら,g++のオプション-Dを使って, DEFS = -DWORDS_BIGENDIAN hoge.o: hoge.cpp g++ $(DEFS) hoge.cpp で,ソースの中でプリプロセッサ使ってディスパッチすればいいと思います. autoheader,autoconf,automake辺りを導入すると更に自動化できて, 例えば,configure.acに, AC_C_BIGENDIAN と書いてconfigureを作っておくと, ./configureした環境に合わせてWORDS_BIGENDIANってのを 勝手にdefineしたりしなかったりしたヘッダを自動で作ってくれたりしてくれて なかなか,便利です. autoheader,autoconf,automakeの使い方は複雑なのでググッて調べて下さい.
369 名前:367 mailto:sage [04/05/21 16:31] >>368 ふええ 懇切丁寧にありがとうございます いくらググッても なかなか出てこなくて困惑していたんです ありがとうございます
370 名前:368 mailto:sage [04/05/21 16:32] タブ入んないんですね. >>368 DEFS = -DWORDS_BIGENDIAN hoge.o: hoge.cpp - g++ $(DEFS) hoge.cpp + <TAB>g++ $(DEFS) hoge.cpp
371 名前:デフォルトの名無しさん mailto:sage [04/05/22 13:13] >>367 そもそもエンディアンに依存したコードを書こうとするのが良くない。 ビットシフトとか何とか使って最初からエンディアンに依存しない実装に汁。
372 名前:デフォルトの名無しさん mailto:sage [04/05/22 13:16] >>371 現実を知れ タコ助が
373 名前:デフォルトの名無しさん mailto:sage [04/05/22 15:54] >372 >371 は至極当然のことを言ってると思うんだけど、問題になるのは性能なの?
374 名前:デフォルトの名無しさん mailto:sage [04/06/09 17:00] makeなんてバッドノウハウの塊だ・・・階層化するともうめちゃくちゃ
375 名前:デフォルトの名無しさん mailto:sage [04/06/20 14:03] make嫌いや 環境変数LIBを上書きして定義してて2日も悩んでた。orz あほだ
376 名前:デフォルトの名無しさん [04/06/23 16:50] ソースとオブジェクトファイルが混ざらないように、 オブジェクトファイルの出力先を変えたいんですが、 %.o : %.cpp $(CXX) $(CXXFLAGS) -c $< -o $(OUTDIR)$@ とか書いてしまうと毎回オブジェクトファイルが生成しなおされてしまいます。 なんかうまい手ないでしょうか?
377 名前:デフォルトの名無しさん mailto:sage [04/06/23 17:07] >>376 オブジェクトファイルの出力先にMakefileを書いて試してみたけど, 依存ファイルのところの記述(:のあと)で親ディレクトリに遡れないみたいで, これでもうまくいかないですねぇ.
378 名前:デフォルトの名無しさん mailto:sage [04/06/23 20:14] >>376 $(OUTDIR)/%.o : %.cpp $(CXX) $(CXXFLAGS) -c $< -o $(OUTDIR)$@
379 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:44] なんだ。makeが好きなの俺だけか・・・。 他になんか便利なビルドツールあったらおしえちくり
380 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:46] Antぐらいかな
381 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:43] bjam
382 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:44] >>378 $(OUTDIR)/%.o : %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@
383 名前:デフォルトの名無しさん mailto:sage [04/06/24 05:15] >>379 MSBuild
384 名前:376 mailto:sage [04/06/24 16:15] >>378 ,>>382 GNU Make 3.80使ってるんだが、 $(OUTDIR)/%.o : %.cpp だと条件にひっかからね。
385 名前:デフォルトの名無しさん mailto:sage [04/06/24 19:07] ふつー、OUTDIRにMakefileを作って VPATH = $(SRCDIR)
386 名前:デフォルトの名無しさん [04/06/24 19:10] gnu makeの最新日本語リファレンスってないの?
387 名前:デフォルトの名無しさん mailto:sage [04/06/24 19:53] >>386 ftp://ftp.ascii.co.jp/pub/GNU/make/ だと古い?一つ前なんだけど。
388 名前:デフォルトの名無しさん mailto:sage [04/06/24 22:33] >>384 んなわけねー $(OUTDIR)%.o : %.cpp ってオチか?
389 名前:376 mailto:sage [04/06/25 21:56] >>385 サンクスコ
390 名前:デフォルトの名無しさん mailto:sage [04/07/13 03:07] VC++(NMAKE)で作ったmakeファイルって Linuxで使用できるんですか?? おせーてくだされ。
391 名前:デフォルトの名無しさん mailto:sage [04/07/13 20:41] >>390 VC++の自動生成で作ったmakは、nmake方言をバリバリ使用 しているので無理。 つーかそもそもVC++系のcl.exe/link.exeがLinuxには無いし、 各コマンドのオプションもgccとは全然違うんだから、流用しよう なんて考えが無謀だろ。 nmake方言を極力使わないようにして書いた手作りmakなら、 CC/LD辺りのマクロを変えるだけで動く可能性はあるが。
392 名前:デフォルトの名無しさん mailto:sage [04/07/13 22:13] >>391 上級者様、ありがとうございまっす! 自分の望んだ以上のお答えでありました! VC++で出来るだけデバッグして、Linuxに持って行って makeファイルでコンパイルをたくらんでいるのですが、 VC++で作ったmakeファイルではダメですか… 手書きで書かないとダメなんすかねぇ…
393 名前:デフォルトの名無しさん mailto:sage [04/07/23 13:07] 総入れ歯、むかし居た会社で nmake を「ナマケ」て呼んでた '`,、('∀`)'`,、
394 名前:デフォルトの名無しさん [04/07/23 19:51] 誘導されてきました Makefileの中に引数で条件分岐できるif文書きたいんだけど どうしたらいいでしか?
395 名前:デフォルトの名無しさん [04/07/23 19:53] Make makes make making many problems.
396 名前:デフォルトの名無しさん mailto:sage [04/07/23 19:56] make make make!
397 名前:デフォルトの名無しさん mailto:sage [04/07/23 20:08] >>394 www.ecoop.net/coop/translated/GNUMake3.77/make_7.jp.html#SEC70
398 名前:デフォルトの名無しさん mailto:sage [04/07/23 20:18] そんなまともな日本語のドキュメントがあったのか。
399 名前:デフォルトの名無しさん [04/07/26 00:12] 再帰的makeする時、上の階層のMakefileで定義した変数 を下位階層のMakefileに継承させたいのですが、どうすればよいでしょうか。
400 名前:デフォルトの名無しさん mailto:sage [04/07/26 00:21] >>399 ttp://www.gnu.org/software/make/manual/html_chapter/make_5.html#SEC60
401 名前:デフォルトの名無しさん mailto:sage [04/08/05 23:55] POSIX標準のmakeってどうして作れないの? shみたいになんとかしてほしいよ。automakeはよく分らんし。
402 名前:デフォルトの名無しさん mailto:sage [04/08/06 01:35] gnu makeでいいじゃん。 自分のreadmeには必須と書いてあるよw
403 名前:デフォルトの名無しさん mailto:sage [04/08/07 02:59] perlみたいに商用UNIXにも標準搭載してくれりゃ構わんけどな。
404 名前:デフォルトの名無しさん mailto:sage [04/08/07 09:49] automake,autoconf使えばいいじゃん。あれこそ最高のハックだよ。 UNIXプログラマ必須のツールだと思うけどね。だからNetBSDみたいに、 GNUツールの全てのMakefileを自前のmake用に新規に書くのは嫌い。 もちろんビルド時間の節約にかなり貢献してるのは認めるけど。。。。 >>403 gmakeは他のGNU系列のパッケージには依存してないよな。gmake必須と するのは、別にGNU原理主義とも関係ないと思う。
405 名前:デフォルトの名無しさん mailto:sage [04/08/08 21:28] automake, autoconf使ってるのでもGNU make依存してるのとかあった ような。(まぁそいつの使い方がなってなかっただけかもしれんが)
406 名前:デフォルトの名無しさん [04/10/08 17:12:14] あげ
407 名前:デフォルトの名無しさん mailto:sage [04/10/11 14:38:29] cookってのはどうなんですか 使ったことないんで使い勝手がわからんばい
408 名前:デフォルトの名無しさん mailto:sage [04/10/28 01:46:23] make.paulandlesley.org/autodep.html -MMD だけで良いと思ってましたが、だめなようです。 どなたか解説していただけませんか。
409 名前:デフォルトの名無しさん mailto:sage [04/10/28 01:48:11] boost が好きなんですが、make の替わりに、bjam を使うのはどうなんでしょう?
410 名前:デフォルトの名無しさん mailto:sage [04/10/28 15:07:58] >>409 どっちが君の言いたいことか曖昧な気がするので両方答えてみる。 q1) boostがmakeの代わりにbjam使ってるのってどうよ? a1) いいんじゃない? ある意味makeよりポータブルだし。 q2) 漏れもbjam使いたいけど、いいの? a2) チーム開発ならリーダー以下チーム全員に合意を取り付けないと。 個人なら好きなのを使って問題なし。
411 名前:409 mailto:sage [04/10/28 16:23:20] >>410 言われてみれば、とってもあいまいでした。 q2) の方を訊いてみたかった個人開発の者です。 今は前に書いた makefile を使いまわして、それなりに満足していますが、 あの boost があえて使う bjam は、どんな感じなんだろうかと思ったんです。 けど、ポータブルなところで選ばれてる気がしてきました。 実際に使ってる人の意見も聞いてみたいです。
412 名前:デフォルトの名無しさん [04/10/30 22:36:17] www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_asug_batch.2d.mode_rules.asp GNU make で上のようなことはできませんか?
413 名前:デフォルトの名無しさん [04/10/30 23:12:19] うちの会社の人バッチファイルで全部コンパイルしてるよ。 だから一部だけ修正しても全モジュールリビルドしてリリースしてる。
414 名前:デフォルトの名無しさん mailto:sage [04/10/31 02:03:47] 一行変えたら全部コンパイルやり直しなんてやってられないな...
415 名前:デフォルトの名無しさん mailto:sage [04/10/31 02:29:19] 自分はmake使ってるけどC++のヘッダにコード書きまくるんで結構遅い・・・
416 名前:デフォルトの名無しさん mailto:sage [04/10/31 10:51:35] >>415 いったい何を書いてるの? そういう漏れは、Pimpl Idiom 教団に入信しちゃった。
417 名前:デフォルトの名無しさん mailto:sage [04/11/04 10:13:35] VC++でプリコンパイルヘッダガンガン使うようになってからは、 iostreamの代わりにiosfwdをインクルードとかそういう事を考える必要も無くなったな。
418 名前:デフォルトの名無しさん mailto:sage [04/11/04 11:12:25] ガンガンっていうかあまりにあたりまえの機能過ぎて gccに付いてないのを知ってびびった。 3.xには付いてるんだっけ?
419 名前:デフォルトの名無しさん mailto:sage [04/11/05 04:47:57] >>418 3.4 からです。 何年も待って、やっとキター。と思ったら、3.4 はびみょーな出来栄えだったのな。
420 名前:デフォルトの名無しさん mailto:sage [04/11/06 00:42:40] プリコンパイル済みヘッダて変な日本語だよな
421 名前:デフォルトの名無しさん mailto:sage [04/11/06 12:41:00] 別に
422 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:43:24] 頭痛が痛いみたいな
423 名前:デフォルトの名無しさん mailto:sage [04/11/07 23:07:36] precompil"ed" headerなんだから、特に変だとは思わないけど。
424 名前:デフォルトの名無しさん mailto:sage [04/11/07 23:37:32] むしろ「済み」だけ日本語にするバランス感覚が受け入れ難い。
425 名前:デフォルトの名無しさん mailto:sage [04/11/08 01:54:48] プリコンパイル済み は 事前にコンパイルが済んでいる だろ。どこがおかしいのやら。
426 名前:デフォルトの名無しさん mailto:sage [04/11/08 07:16:26] >>425 それなら「事前コンパイル済みヘッダ」になるだろ。 なぜ「プリコンパイルドヘッダ」ではないのだろうか? どうやらMSの翻訳が元のようだが。
427 名前:デフォルトの名無しさん mailto:sage [04/11/08 19:53:37] >>426 普通カタカナに直す時に「ド」なんて書かない。あなた日本人?
428 名前:デフォルトの名無しさん mailto:sage [04/11/08 19:55:46] へぇ(嘲笑)
429 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:16:47] なら、プリコンパイルヘッダでいいじゃん。済みなんて入れる必要もない。
430 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:31:05] ↑論点ずれてる
431 名前:デフォルトの名無しさん mailto:sage [04/11/09 00:16:14] いまさらMS翻訳にケチつけるなよ。 いったいなにがしたいんだ。
432 名前:デフォルトの名無しさん [04/11/12 08:38:43] >>427 > 普通カタカナに直す時に「ド」なんて書かない。 よくあるがこれは変な習慣だよなあ。そもそも、なんで抜くのかが疑問だ。コレMSが始めたのか?
433 名前:デフォルトの名無しさん mailto:sage [04/11/12 08:51:46] >>427 メモリマップドI/Oとか言うじゃん
434 名前:M.B. [04/11/12 11:33:11] 全部読んだが make を自分で書いたアフォは漏れだけだった…… orz
435 名前:デフォルトの名無しさん mailto:sage [04/11/12 12:29:46] >>433 それは「ド」ではなく「ト」では?
436 名前:デフォルトの名無しさん mailto:sage [04/11/13 02:37:12] >434 (;´Д`) 漏れも、なんか make をうまく使いこなせなくて 癇癪起こしちゃって自分で書こうとした事があるよ……
437 名前:M.B. mailto:sage [04/11/13 15:24:17] Java のプログラムを Win 上で開発しているのだが、 昔アスキーで出してたような、.exe 形式の make が見当たんなくてさ、 GNU make のソースを Cygwin 上でコンパイルして .exe 形式にすりゃあいいと思ったんだが結局ソースが見つからず、 ええい面倒臭え、と思って Java で書いた。 非常にチャチなものだが便利に使ってる。
438 名前:デフォルトの名無しさん mailto:sage [04/11/13 17:13:54] >>437 GNU make のソースが見つからないって、アフォか。
439 名前:デフォルトの名無しさん mailto:sage [04/11/13 19:02:26] てか、cygwinにGNU makeのバイナリがあるだろが。
440 名前:デフォルトの名無しさん mailto:sage [04/11/13 19:03:33] javaならant使えよ・・・
441 名前:デフォルトの名無しさん mailto:sage [04/11/13 19:55:33] ぶかあああああああああああああああああああああああああああああああああ
442 名前:デフォルトの名無しさん mailto:sage [04/11/13 20:52:21] ワロタ
443 名前:M.B. [04/11/13 23:13:39] ぶかー。
444 名前:デフォルトの名無しさん mailto:sage [04/11/13 23:17:33] makefile書くまでもないような処理をバッチファイルで ftimecomp source target && ( sourceからtargetを作る処理 ) とかはたまにやるけど。ftimecompは自作ツール。
445 名前:M.B. [04/11/13 23:23:45] 自作せんとね、使い方忘れるのよ。 いらんものいろいろ作ったなぁ。
446 名前:デフォルトの名無しさん mailto:sage [04/11/14 00:00:07] その自作ツールの使い方を忘れるんで、 Makefileに書いておくんだけどな、おれ
447 名前:M.B. [04/11/14 00:18:42] 漏れも自分ちの電話番号とか忘れるんで紙に書いてしまっとくんだが、 どこにしまったか忘れる。
448 名前:デフォルトの名無しさん mailto:sage [04/11/14 00:29:24] >>447 無駄話でageんな
449 名前:M.B. mailto:sage [04/11/14 00:50:29] ここでも言われた _| ̄|○
450 名前:デフォルトの名無しさん [04/11/19 22:59:34] 2重コロンの意味がわかんね よく単一ターゲットに使われるみたいだけど どういう意味なの?
451 名前:デフォルトの名無しさん mailto:sage [04/11/20 09:13:01] >>450 マニュアル読め www.ecoop.net/coop/translated/GNUMake3.77/make_4.jp.html#SEC41
452 名前:デフォルトの名無しさん mailto:sage [04/11/20 13:19:25] よんだけどわかんなかったんだよぅOTL
453 名前:デフォルトの名無しさん mailto:sage [04/11/20 18:31:09] >>452 カードキャぷたーさくらってマジ面白いよな。
454 名前:デフォルトの名無しさん mailto:sage [04/11/21 17:55:08] >>452 > よんだけどわかんなかったんだよぅOTL 同志よ、俺もわからん。 でも、普通に依存関係書いている分には必要ないような気がする。
455 名前:デフォルトの名無しさん mailto:sage [04/11/21 18:16:18] >>454 少し調べてみた。 all:target.txt target.txt::source1.txt @echo do task 1 @echo source is $^ target.txt::source2.txt @echo do task 2 @echo source is $^ source1.txt source2.txt: source1.txtが更新されると、「do task 1」が表示され、source2.txtが更新されると「do task 2」が更新される。 両方更新されると、両方表示される。 コロンをひとつにすると、同じターゲットに対するコマンドが二つあると警告が出て、両方更新された場合にも一方のコマンドしか実行されなくなる。 マニュアルにある通り、どのソースが変更されたかによって実行するコマンドを切り替えるための方法だと思う。
456 名前:make に代わる次世代標準 [04/11/21 21:03:13] make ってそろそろ引退してほしい。 make に代わる次世代標準はありませんか? ちなみに Ant は処理系が Java で書かれているし XML 記法だからやだ。
457 名前:デフォルトの名無しさん mailto:sage [04/11/21 21:04:44] make が sh と結びついている時点で最悪なんだよ。 perl か python と結びついてほしい。 たいていの UNIX には perl や python は入っているだろうし。
458 名前:デフォルトの名無しさん [04/11/21 21:05:18] >Ant は処理系が Java で書かれているし インスコすれば、そんなことは誰もわからない。
459 名前:デフォルトの名無しさん mailto:sage [04/11/21 21:07:49] >>456 MSBuild使え
460 名前:デフォルトの名無しさん mailto:sage [04/11/22 00:01:46] >>457 個人的にはAWKと(ry
461 名前:デフォルトの名無しさん mailto:sage [04/11/22 02:57:27] >>456 次世代標準なんかじゃないけど、jamとかどうですか? ttp://www.freetype.org/jam/index.html
462 名前:デフォルトの名無しさん mailto:sage [04/11/22 08:35:38] >>457 SHELL変数をうまく使え
463 名前:デフォルトの名無しさん [04/11/22 09:26:18]
464 名前:デフォルトの名無しさん mailto:sage [04/11/23 13:13:19] MinGWのmakeで処理していますが、 a.hpp : b.hpp の依存関係の解決方法を教えていただけないでしょうか?
465 名前:デフォルトの名無しさん mailto:sage [04/11/23 17:01:09] >>464 依存関係を解決するとはなんぞや?
466 名前:464 mailto:sage [04/11/23 17:45:13] いろいろ調べていた時に、サイトで使われていた表現ですが、 間違っていたのでしたら申し訳ありません。 a.hppにおいて、 #include "b.hpp" となっているとして、 b.hppを編集した場合、a.hppをインクルードしている各々のobj(cpp)ファイルが その都度コンパイルされて欲しい、ということです。
467 名前:デフォルトの名無しさん mailto:sage [04/11/23 17:54:16] >>466 gcc -MM makedepend このへん調べれ。>408のリンク先もけっこういいな。
468 名前:デフォルトの名無しさん mailto:sage [04/11/23 17:59:56] ヘッダの依存関係のチェックやビルド後のリリース用スクリプト (どっかにコピーするとか)の記述なんかもサポートしたMakefileの フレームワークというかお手本みたいなのってどっかにないの? 0から手書きするのめんどくさ過ぎ。かといってAutoなんたらとか使いたくないし。
469 名前:デフォルトの名無しさん mailto:sage [04/11/23 18:35:14] >>468 >ヘッダの依存関係のチェックやビルド後のリリース用スクリプト >(どっかにコピーするとか)の記述なんかもサポートしたMakefileの >フレームワーク Autoなんたらはそのためにあるのだが....
470 名前:デフォルトの名無しさん mailto:sage [04/11/23 19:47:11] >>467 早速調べてみます。有難うございます。
471 名前:466(464)=470 mailto:sage [04/11/23 19:49:50] 466(464)=470です。すいません。
472 名前:デフォルトの名無しさん mailto:sage [04/11/23 21:02:27] >>464 自分も最近makeを使い始めたんですが、ヘッダファイルをターゲットとして指定するのがそもそも間違いでは?? ターゲットはあくまで、その下の行のコマンドによって作成されるターゲットであるはずです。 つまり>>466 の場合では、a.hppは、b.hppから”作成"されるわけではないので(ただインクルードされているだけ)、 a.hpp : b.hpp とa.hppをターゲットとして書くのはおかしい気がします。 (ターゲットにヘッダファイルが指定された時にmakeがどのような動作をするのかわかりませんでしたが) こういう場合は、 オブジェクトファイル: ヘッダファイル1 ヘッダファイル2 もしくは、 ソースファイル: ヘッダファイル1 ヘッダファイル2 とスペースで区切って並べて書いた方がいいかもしれません。こうする事で少なくとも、 ターゲットのオブジェクトファイルやソースファイルと、複数のヘッダファイルとの依存関係は維持出来るはずです。 しかしこれでは、ファイルが増えて来た時に大変そうなので、他にもっと良い方法があるのかも知れませんが…。
473 名前:デフォルトの名無しさん mailto:sage [04/11/23 21:10:51] > もしくは、 > > ソースファイル: ヘッダファイル1 ヘッダファイル2 ああ、すいませんこれは間違ってますね。 オブジェクトファイルをターゲットとするべきだと思います。
474 名前:デフォルトの名無しさん [04/12/22 18:34:39] 外部コマンドを実行するときに hoge.h : hoge.list hmaker.exe --prefix=hoge hoge.list みたいなふうにしたんですが、この=が原因でこの文がマクロ変数に 代入してる式みたいなふうに認識されてしまい升。nmake.exeです。 どうすればいいんでしょうか。
475 名前:デフォルトの名無しさん [04/12/23 03:08:59] make makes make make many problems.
476 名前:デフォルトの名無しさん mailto:sage [04/12/25 02:20:57] cmake使ってる人いる?
477 名前:デフォルトの名無しさん [05/03/02 02:16:06 ] ソースツリーの中から必要な.h,.cファイルを抜き出すために、 .cのファイルのリスト(SRC)を元にgcc -MMで出力される依存関係を出力し、 それをパースして、必要な.cと.hファイルを出力するperlスクリプトを書いてみました。 files.txt: gcc -MM $(CFLAGS) $(SRCS) | parse.pl > $@ みたいな感じです。 で、生成されたファイルの中身は、 ../src/a.h ../src/dir/b.h のようにファイルが羅列されており、 これらのパスの"../src"を"package/src"に置き換えたパスにコピーしたいと思っています。 そのルールを書きたいのですが、 srcpackage: files.txt srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt)) srcpackage: $(DSTFILES); ../package/%.h : ../src/%.h cp $^ $@ ../package/%.c : ../src/%.c cp $^ $@ と書いてみたところ、下二つのルールにひっかからず、コピーできないでいます。 他に、 %.c: cp $@ $(subst package/src, ../ , $@) というのも試してみましたが、 srcpackageがsrcpackage.cとひっかかってしまい、うまくコピーができません。 どなたかご教示いただけないでしょうか?
478 名前:デフォルトの名無しさん mailto:sage [05/03/02 02:20:46 ] >>477 > srcpackage: files.txt > srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt)) > srcpackage: $(DSTFILES); これの意味を自分で(日本語で)説明できるか? できないなら、マニュアル見直せ。 ほかにも問題がありそうだが、まずはそこから。
479 名前:477 mailto:sage [05/03/02 16:26:25 ] >>478 1行目:srcpackageを作るにはまずファイルのリスト(files.txt)への依存を定義 2行目:ファイルのリストのテキストを読み込み、コピー先のパスに書き換え、変数に代入 3行目:コピー先のファイルへの依存を定義 ということをやりたかったのですが、 srcpackage: file.txt; %.c : コピー処理 %.h : コピー処理 のようにすると、file.txtの生成前に後のcat file.txtなどが実行され、 困っていました。 ご指摘の通りあまり理解せずに進めていました。 とりあえずMakefileには srcpackage: file.txt make -f Makefile.copy copy と書き、別のファイル(Makefile.copy)で、 copy: $(subst ../src, package/src, $(shell cat file.txt|./parse.pl | sort | uniq)); %.c: コピー処理 %.h: コピー処理 としてみました。
480 名前:デフォルトの名無しさん mailto:sage [05/03/02 20:34:06 ] >>479 srcpackage: file.txt を「srcpackageを作るためにはfile.txtが必要」と読め。
481 名前:デフォルトの名無しさん mailto:sage [05/03/03 00:44:11 ] >>479 やっぱりマニュアル読んで出直せ。 > srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt)) この構文は、 srcpackage をターゲットとするコマンド内でのみ有効な変数の代入。 グローバルな変数への代入なら "srcpackage: " を削除しろ。 > srcpackage: $(DSTFILES); これは srcpackage: $(DSTFILES) と同じ意味。 srcpackage を $(DSTFILES) に依存させるのであれば最後のセミコロンを削除しろ。
482 名前:デフォルトの名無しさん mailto:sage [05/03/03 00:55:16 ] >>477 # ここらへんで SRCS を定義しておくこと。 ASSIGNMENT_OF_USEDFILES:=assignment_of_USEDFILES.mak $(ASSIGNMENT_OF_USEDFILES) : $(SRCS) echo 'DSTFILES:=' `gcc -MM $(CFLAGS) $(SRCS) | parse.pl` >$@ -include $(ASSIGNMENT_OF_USEDFILES) DSTFILES:=$(patsubst ../src/%,package/src/%,$(USEDFILES)) $(DSTFILES) : package/src/% : ../src/% cp $< $@ .PHONY : srcpackage srcpackage : $(DSTFILES) # 動作未確認
483 名前:477 mailto:sage [05/03/04 16:25:30 ] >>480 すみません。以後気をつけます。 >>481 > > srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt)) >この構文は、 srcpackage をターゲットとするコマンド内でのみ有効な変数の代入。 srcpackageが必要とするファイルを生成する別のルールにも 適当されるものだと勘違いしておりました。 ありがとうございます。 >>482 ありがとうございます。 こちらで試してみます。
484 名前:デフォルトの名無しさん mailto:sage [05/03/05 12:14:47 ] > srcpackageが必要とするファイルを生成する別のルールにも > 適当されるものだと勘違いしておりました。 適用されるよ。ルールじゃなくてコマンドに、だけど。
485 名前:デフォルトの名無しさん [05/03/11 01:03:30 ] GNU make を使っています。 ルールでのファイル指定や、文字列操作関数なんかでは、 要素の区切りがスペースになってるんですけど、 スペースを含む文字列を一つの要素として扱いたい場合はどうすればいいんでしょうか? $(TARGET_DIR)/target : ... ... という Makefile に対して、 $ make TARGET_DIR='dirname with spaces' とされた場合の対処に困っています。 とおもったら、 >>358-360 で少し似た話がでていたようですね。 文字列操作関数の問題が解決してないのか。
486 名前:デフォルトの名無しさん [2005/04/27(水) 22:07:37 ] sconsってどう www.scons.org/
487 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 15:24:34 ] nmakeの使い方を教えてください
488 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 23:14:49 ] >>487 www.google.co.jp/search?q=nmake
489 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 19:59:57 ] MSのnmakeって「this is Not gMAKE」の略称だっけ?
490 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 13:08:56 ] GNU make で、複数のターゲットを更新するアクションの カコイイ書き方教えれ。 例) トークン表とパーサ表を吐く、Bisonに対するアクション指定
491 名前:490 mailto:sage [2005/06/08(水) 13:15:14 ] 「コマンド連鎖の缶詰を定義する」の章に載ってた 分かりづらいよマニュアル......orz......
492 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 00:27:29 ] 識者の方、知恵をお貸しください。 ソースファイル(*.f90)が、ファイル数200超あります。 詳しいコンパイルオプションは省きますが、 最終的には下記のように実行モジュールを作成したいのです。 $(TARGET) : $(OBJS) $(FC) -o $@ $(OBJS) ところが、OBJSとして指定する(*.o)ファイルが200超あり OBJS = a1.o a2.o ,,,,, a200.o と書いていくのが大変です。 Linuxでは SRCS = $(SHELL *.f90) OBJS = $(SRCS:.f90=.o) とすることで、簡単なMakefileを作れたのですが、 GNUのmakeが入っていないマシンで使うこともあり そこではSHELLが使えませんでした。 ”SHELLを使わない”という条件で この部分を簡単に作成するいい方法はないでしょうか? ヨロシクお願いします。
493 名前:492 mailto:sage [2005/06/12(日) 00:28:58 ] > $(TARGET) : $(OBJS) > $(FC) -o $@ $(OBJS) 訂正です。 $(TARGET) : $(OBJS) <---Tab--->$(FC) -o $@ $(OBJS) です。
494 名前:492 mailto:sage [2005/06/12(日) 00:31:30 ] 更に訂正っす。 > SRCS = $(SHELL *.f90) > OBJS = $(SRCS:.f90=.o) SRCS = $(SHELL ls *.f90) OBJS = $(SRCS:.f90=.o) の間違いです。 何度もすいません。
495 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 12:02:03 ] >>492-494 www.gnu.org/software/make/manual/html_node/make_29.html
496 名前:492 mailto:sage [2005/06/12(日) 14:51:16 ] レスありがとうございました。 $(wildcard *.f90) 先ほど試してみましたが、これも存在してませんでした。 他に何か手法があればご紹介お願いいたします。
497 名前:495 mailto:sage [2005/06/12(日) 14:59:24 ] >>496 GNU make が使えない環境か。読み間違えてたよゴメン。
498 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 15:26:42 ] >492 Makefile を修正するシェルスクリプトを作成してそれを実行するようにすれば?
499 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 15:35:01 ] >>498 そしてconfigureにたどりつきAutomakeがワイルドカードに未対応に気付くとか
500 名前:492 mailto:sage [2005/06/12(日) 16:12:12 ] >>498 そうですね。最終的にはそうなってしまう可能性もあります。 別途 echo "SRCS = \" > list.mk ls *.f90 >> list.mk のようにしてから(正確には.「f90」を「.f90 \」への置換もしてますが) Include list.mk とすることでうまくいくことは可能なんですが、 Makefile単体で何とか出来ればなぁ、と思ったので ご相談しました。 もし何かアイデアあればご教授ください。 なければ、こんな手法でやるしかないっすね。
501 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 20:53:36 ] >>500 Sconsというのがあるけど、Python必須らしいです。 www.scons.org/doc/HTML/scons-user.html 意外と便利そうです。 import glob files = glob.glob(wildcard)
502 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 13:55:49 ] antなbuild.xmlをMakefileに移植してるんですが、 ディレクトリ移って作業するにはどうしたらよいんでしょう。 cd hoge; だと、その行のコマンドしか駄目ですし。 移るディレクトリにまた、Makefile作っておいて、 さらにmake呼ぶのがmake流なんでしょうか
503 名前:デフォルトの名無しさん [2005/07/21(木) 13:57:08 ] ageます
504 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 19:17:41 ] >>502 >移るディレクトリにまた、Makefile作っておいて、 >さらにmake呼ぶのがmake流なんでしょうか automakeでmakeファイル作るときは そんな風にするのが一般的だと思う 「make流か」と言われれば ?
505 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 20:17:33 ] ん?cdで移動しても問題ないだろ
506 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 00:51:40 ] >>502 cd hoge; \ do_something; \ do_anotherthing
507 名前:デフォルトの名無しさん [2005/08/14(日) 18:17:10 ] mingwのmake.exeについて質問です。 include に渡すファイル名に半角スペースが入ってた場合、 ¥マークでエスケープしないとダメっぽいんですが、 makeの変数に半角スペースの前に¥マークを置く方法ないでしょうか? ↓これをやってみたんですが無理でした。 $(subst \ ,\\\ , $(VALUE)) または include に半角スペースを含むファイルパスを渡す方法が無いでしょうか? ちなみに "" で囲ってみたんですがダメでした。
508 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 13:21:52 ] 半角スペースを含むパスを使わない。
509 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 15:16:58 ] 超ダサっ!
510 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 17:30:57 ] INCLUDE=-I"path 1" -I"path 2" ふつうにできるょ?
511 名前:507 [2005/08/17(水) 23:01:21 ] 返信あざっす! >>508 今から僕のコンパイル作業ディレクトリを変えるのはちょっと・・・ >>509 俺か!?俺のことか!? >>510 makefile から makefile をインクルードする時のパスですにょん -include xxxxx.mk www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html#TOC15
512 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 00:47:12 ] >>511 > 今から僕のコンパイル作業ディレクトリを変えるのはちょっと・・・ includeされる側のディレクトリとは関係ないんじゃないの? 相対パスで指定するとかsymlink張ってみるとか、なんか工夫してみ。
513 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 04:49:48 ] >>507 mingwのmakeってcygwin使わないんだっけ? cygwinのmakeならこんなんで逃げれるけど。 -include $(shell cygpath -m $$(cygpath -d $(VALUE)))
514 名前:507 [2005/08/18(木) 23:29:14 ] www.ecoop.net死んじゃったか(´∀`;) makeの解説よかったのに…勿体無い。 >>512 winなんでsymlinkは無理っす。 相対パスは切実にしたいんだけど、makeの組込定数の$(CURDIR)を使いたいもので、 これが絶対パスを返すので相対パスにできないんですよね・・・。 >>513 cygwinはいれてないなぁ(´∀`;) まあ、なんとかしてみます。 >>512-513 ありがとう。
515 名前:507 [2005/08/18(木) 23:39:30 ] というかマイドキュメント(C:\Documents and Settings\xxxx)の配下でコンパイルするのがいけないのか・・・。 いや、でもあきらめたくない。
516 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 02:18:52 ] windowsだと短い名前とか使えなかったっけ? DOCUME~1 みたいなやつ。たしかdir /xで見れたような。 あるいはsubstを使ってみるとか。
517 名前:516 mailto:sage [2005/08/19(金) 02:20:34 ] substはシェルのコマンドのsubstね
518 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 13:43:07 ] >>514 WinNT移行でNTFSならシンボリックリンクできるよ。 「ジャンクション」或いは"symlink-1.02.zip"で検索して味噌。
519 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 13:58:59 ] NTFSの仕様は糞だよな
520 名前:507 [2005/08/21(日) 01:39:22 ] >>516 短い名前かぁ。盲点ですた。 >>518 まじっすか >>519 シンボリックリンクに慣れるとねぇ。あれは便利すぎ。 でも、NTFSにもシンボリックリンクは実装してないだけで、 データ構造の中には予約としてあるっぽいよ
521 名前:507 mailto:sage [2005/08/21(日) 01:40:59 ] やば。age設定になってた。ゴメス(^ω^;)
522 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 12:19:05 ] >>520 だからね、ディレクトリに関してはジャンクションはディフォルトで使えるんですよ。 ファイルに対するジャンクションが意図的に禁止してあるだけで。 生半可な知識で語るくらいなら>518に書かれているツールの作者のページを読んできな。
523 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 13:28:11 ] 絶対パスで格納するうんこ仕様
524 名前:デフォルトの名無しさん [2005/08/28(日) 19:09:51 ] makeでsrcディレクトリのソースを binディレクトリに展開するにはどうしたらよいですか?
525 名前:デフォルトの名無しさん [2005/08/28(日) 19:19:06 ] 間違えた srcディレクトリのソースをコンパイルして 生成物をbinディレクトリに展開したいんです
526 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 20:53:45 ] 展開ってどういう意味?
527 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:02:30 ] 配置って意味でそ
528 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:15:23 ] コピーしたいだけなら、普通に copy とか、cp とかすりゃいいんじゃねーの?
529 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:37:51 ] >>524 「cd bin」でbinディレクトリに移動してからコンパイルすればいい。 ../srcディレクトリをVPATH等で指定してやれば問題はないはず。
530 名前:デフォルトの名無しさん mailto:sage [2005/08/30(火) 09:09:34 ] パスと%使ったらうまくできた。 これでターゲットファイル名とソースファイル名のみを書いてやるだけで 自動でオブジェクトファイルだのを別ディレクトリに展開してくれるようになった。 お騒がせして申し訳ない。
531 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 15:09:12 ] 同じディレクトリで2つのmakeファイルを作成する方法はないですか? 1つめのプログラムをmakeのち実行した後に、2つめのプログラムをmakeのち実行をしたいのですが。 ちなみにcを使っています。
532 名前:デフォルトの名無しさん [2005/10/24(月) 15:09:47 ] ageさせていただきます。
533 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 16:45:07 ] ミャケでございます。 質問でございます。 SRCS = \ xxx/yyy/zzz/aiueo.cpp \ qqq/rrr/kakikueyo.cpp \ nnn/ooo/sashimidesu.cpp \ OBJS = $(patsubst %.cpp,obj/%.o,$(SRCS)) このようにしているのですが OBJSの中身が obj/xxx/yyy/zzz/aiueo.o obj/qqq/rrr/kakikueyo.o obj/nnn/ooo/sashimidesu.o のようになってしまい、ディレクトリ毎にルールを設定しないと No rule to make target obj/xxx/yyy/zzz/aiueo.o のようなエラーが出てしまいます。 *.cppから*.oへの変形途中に obj/aiueo.o obj/kakikueyo.o obj/sashimidesu.o のように変形させる方法はありませんでしょうか? gmake 3.80です。宜しくお願いします。
534 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 23:25:09 ] >>531 make -f 使えばいいんじゃないの?
535 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 23:26:55 ] >>533 $(notdir ...)
536 名前:ミャケでございます mailto:sage [2005/10/25(火) 10:39:38 ] >>535 ありがとうございます。うまくいきました。
537 名前:デフォルトの名無しさん [2005/11/04(金) 08:43:29 ] $(CC) $(CFLAGS) -o $@ $< を $(CC) $(CFLAGS) -o $< $< って書き間違えた…… ヘッダ以外全て消え去ったよ svnで管理してたから古い状態で復活できたけど、 10個近く新しいファイルを作ってた。 復活できたファイルも変更点がかなりあった……
538 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 10:30:57 ] >>537 デフォルトの規則をそのまま使えばいいのに…
539 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 11:30:34 ] >>538 VPath使ってたら明示せざるを得なくなった + コンパイラの切り替えとか含めててディフォルトルールじゃ対応しきれなくなってた
540 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 21:10:42 ] 下記のような makefile で make X.a を実行した場合に,x.b y.b z.b が表示 されて欲しいのですが,表示されません. 調べて見た感じでは,「%.a: $($(basename $@))」の $@ が空になってしまう みたいなのですが,これを動くようにする方法はありますか? エッセンスだけを取り出したのでやや不自然な記述になってしまっていますが, 要は型ルールの依存ファイルに,マッチした語幹を使用したいってことです. ただし,実際には X.b に相当する記述がたくさんあるので,下記のような記述 は避けたいと考えています.また,$(eval ) バグがあるので $(eval ) の使用 も避けたいと考えています.
541 名前:540 [2005/11/12(土) 21:11:08 ] (続き) > X.b: x.b y.b z.b > %.a: %.b > @# dummy 環境は GNU Make 3.80 です. アドバイスお願いします. ---------------------------------- X.b := x.b y.b z.b %.a: $($(basename $@).b) @# dummy %.b: @echo $@ .SUFFIXES: .a .b 書き忘れましたが,下記のような記述もなんかださいので避けたいです.現状, こうするしかないかなーと考えていますが...注文が多くてすみません. %.a: @$(MAKE) $($(basename $@).b)
542 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 15:29:14 ] >>17 にある質問と同じ内容なのですが 1ソースファイルから1実行ファイルを作るだけの処理を 一気にまとめてやるにはどういう風にmakeをかけば良いでしょうか?
543 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 17:37:05 ] ALL: ari.exe ori.exe haberi.exe imasokari.exe
544 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 21:42:02 ] >>543 ありがとうございます。 環境の違いを書くのを忘れ申し訳ありません。 とりあえずallで指定しておくんだなと思って、こう書くことにしました。 とりあえず動いていますが、なんかおかしいところがあればご指摘ください。 CC = gcc TARGET := $(patsubst %.c,%,$(wildcard *.c)) all : $(TARGET) % : %.c $(CC) -o $* $<
545 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 21:47:33 ] 追加。。。 環境はFedora Core 4、gcc 4.0.1、GNU Make 3.80でCのプログラムです。
546 名前:デフォルトの名無しさん [2005/12/27(火) 13:12:32 ] オライリーからmake3版でたお
547 名前:デフォルトの名無しさん mailto:sage [2005/12/27(火) 19:22:30 ] この間、第2版買ったばかりの俺に対するイジメだな。
548 名前:デフォルトの名無しさん [2005/12/28(水) 15:47:52 ] makefileで # ---------------------------------------- SRCS = SrcDir/test.cpp\ SrcDir/Mod1/test2.cpp SrcDir/Mod2/test3.cpp depend: g++ -MM -MG $(SRCS) > dep.txt # ---------------------------------------- こうすると 出力が test.o: SrcDir/test.cpp test2.o: SrcDir/test2.cpp test3.o: SrcDir/test3.cpp こうなってしまいます。 期待しているのは SrcDir/test.o: SrcDir/test.cpp SrcDir/Mod1/test2.o: SrcDir/test2.cpp SrcDir/Mod2/test3.o: SrcDir/test3.cpp この形です。 何かdependターゲット内の記述でうまく期待した出力をさせるようにできないでしょうか?
549 名前:デフォルトの名無しさん mailto:sage [2005/12/28(水) 22:07:47 ] >>548 試してないが、これでどうかね? OBJS = $(SRCS:.cpp=.o) DEPENDS = $(addsuffix .d, $(OBJS)) $(OBJS) : %.o : %.cpp g++ -c $< -o $@ -MD -MP -include $(DEPENDS) これなら明示的に make depend しなくても、 コンパイルが成功するたびに最新の依存関係に更新されて便利。
550 名前:548 mailto:sage [2005/12/29(木) 19:06:14 ] >>549 依存関係を更新しないと、コンパイルが必要なファイルが分からないので コンパイルが成功した時に依存関係が更新されても、手遅れではないでしょうか? 今、それぞれに無理やりディレクトリを付与してしまおうと考えていて、 ここまで来ました。 depend: $(foreach IT,$(SRCS),\ $(RM) $(IT).dep; echo "$(dir $(IT))" > $(IT).dep; g++ -MM $(IT) >> $(IT).dep;\ ) このあとcatか何かでファイルを纏めればいいと思うのですが、問題は echo "$(dir $(IT))" > $(IT).dep; の部分で、出力結果に改行が入ってしまいます。 この改行を入れない方法はないでしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2005/12/29(木) 21:50:13 ] VPATH
552 名前:549 mailto:sage [2005/12/30(金) 00:17:51 ] >>550 一番最初は .o ファイルが存在しないから、 ヘッダの依存関係に関係なくコンパイルが必要なことがわかる。
553 名前:548 mailto:sage [2005/12/30(金) 10:44:49 ] >>551 VPATHだと、SRCSにわざと含めていない、 別ディレクトリ内の同名ファイルがあると誤動作するんです。 >>552 既に .oファイルが存在する状態でソースコードを編集したら……? あーあ、 .o よりソースのタイムスタンプが若いからコンパイル対象になるので 無問題なんですね……。 書き込みを拝見する前に力技で解決してしまいました。 力技とはこれ echoex.c #include <stdio.h> int main(int argc, char** argv) { for (int i = 1; i < argc; ++i) { if (i == 1) { printf("%s", argv[i]); } else { printf(" %s", argv[i]); } } return 0; } これをコンパイルして実行パスを通しておいて depend: $(foreach IT,$(SRCS),\ $(RM) $(IT).dep; echoex "$(dir $(IT))" > $(IT).dep; g++ -MM $(IT) >> $(IT).dep;\ ) cat $(addsuffix .dep,$(SRCS)) > depend.inc $(RM) $(addsuffix .dep,$(SRCS)) これで……解決?
554 名前:デフォルトの名無しさん [2006/03/01(水) 23:24:01 ] 別ディレクトリにあるファイルを関連付けする方法ってないですか? 例えば、ソースがカレントディレクトリ、出力が一つ下のディレクトリだと、 SRC = $(wildcard *.hoge) DEST = $(addprefix ../,$(SRC:.js=.mage)) .SUFFIXES: .hoge .mage all: $(DEST) .hoge.mage: @echo $@ $< では上手くいきません・・・ .hoge../.mageみたいに関連付けられないのかなあ
555 名前:デフォルトの名無しさん [2006/03/01(水) 23:28:01 ] ちなみに、いまは、現在のディレクトリに出力して、下のディレクトリにコピーしてます。
556 名前:デフォルトの名無しさん mailto:sage [2006/03/02(木) 00:05:11 ] >>554 パターンルール使え。 % 入ってるやつ。 DEST の定義で .js ってなってるのは書き込み時の間違いか? あと ../ は一つ上のディレクトリだと思う。
557 名前:デフォルトの名無しさん [2006/03/02(木) 00:42:40 ] >>556 SRC = $(wildcard *.hoge) DEST = $(addprefix ../,$(SRC:.hoge=.mage)) .SUFFIXES: .hoge .mage all: $(DEST) ../%.mage:%.hoge @echo $@ $< で行けましたー >DEST の定義で .js ってなってるのは書き込み時の間違いか? 書き換えミスです。 >あと ../ は一つ上のディレクトリだと思う。 ああ、そっか、下でなくて、上ですね。
558 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 08:08:37 ] gnu makeでローカルなサッフィクスルールを作りたいのですが、 事情があって生成ファイルにhoge.foo.etcのように複数のピリオドを持たせています。 適切なやり方がありましたら教えてください。
559 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 18:31:43 ] >>558 パターンルール使え。 % 入ってるやつ。
560 名前:デフォルトの名無しさん [2006/03/20(月) 17:23:30 ] Visual C++とC++Builderのmakeを両方とも使いたいのですが、どうやったらうまく切り替えられるでしょうか?
561 名前:デフォルトの名無しさん [2006/03/20(月) 17:28:22 ] Outside the United States. If you acquired the software in any other country, the laws of the country where you live apply.
562 名前:デフォルトの名無しさん mailto:sage [2006/03/21(火) 02:51:13 ] >>560 なにに困ってるのかサッパリわからん。 普通に使い分けられるだろ?
563 名前:デフォルトの名無しさん [2006/03/21(火) 15:51:15 ] >>560 ん?VisualC++て、nmakeだから、Borlandのmakeとはコマンド違うくない?
564 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 04:14:47 ] g++ hoge.cpp -o hoge -O3 -fomit-frame-pointer -funroll-loops -march=opteron -ffast-math と直接コンパイルしたものと、 CC=g++ CXXFLAGS = -fomit-frame-pointer -funroll-loops -march=opteron -ffast-math hoge: というMakefileを作ってコンパイルしたもので、できあがったファイルのサイズが違うのですが なぜなのでしょうか?
565 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 07:50:49 ] コンパイルオプションが違うからwww
566 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 14:19:56 ] >>564 お前のその -O3 は一体何なんだと。
567 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 16:57:22 ] おっさん
568 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 18:32:38 ] 90°傾いたウサギ風船
569 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 02:16:20 ] 1つのMakefile で複数の exe に対応することってきますか? 1 cpp -> 1 exe で。 現状ほぼ同じ Makefile をコピーして指定したソースファイルの名前を編集してやっているのですが、 非常にめんどくさいです。 もし可能ならばさらに、カレントディレクトリにある cpp をワイルドカードばりに取得して、 a.cpp -> a.exe のようにコンパイルしていきたいです。 よろしくおねがいします。
570 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 02:24:54 ] >>569 >>559
571 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 02:28:58 ] てゆーか、make a.exe でデフォルトルールで作られるだろ。Makefile無くても。 違ったっけ?
572 名前:569 mailto:sage [2006/03/26(日) 08:42:02 ] さぱーりわからん。 SRCS = hoge.cc mage.cc #もしくは $(wildcard *.cc) ? EXES = $(SRCS:.cpp=.exe) OBJS = $(SRCS:.cpp=.obj) ときてさてどうすれば?
573 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 08:45:06 ] >>572 >>559
574 名前:569 mailto:sage [2006/03/26(日) 10:10:31 ] %.o : %.cc $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ みたいにかいてもなんにもならないYO. %.cc の値がどこからくるのかさぱーりわからん。
575 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 10:14:29 ] >>574 書いただけじゃ何も起こらないよ。 ゴールを指定して make を実行しないとね。
576 名前:569 mailto:sage [2006/03/26(日) 10:19:29 ] >>575 make hoge.o とやれってこと? 一度の make で全部一気にやりたいって質問だったんだけど。 読み直してみたら、たしかに書いてないな orz
577 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 10:53:20 ] >>576 make がどう動くのか、わかってないんじゃないか? その状態じゃどうやっても無駄だぞ。
578 名前:569 mailto:sage [2006/03/26(日) 11:36:59 ] >>577 all: hoge.exe mage.exe shoge.exe hoge.exe: hoge.cpp gcc $< -o $@ mage.exe: mage.cpp gcc $< -o $@ shoge.exe: shoge.cpp gcc $< -o $@ とかいたとき、make 一度で 1 cpp -> 1 exe を全部作れます。 それをいちいち hoge mage shoge だのかかないでやりたい。 できますか?
579 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 12:43:00 ] >>578 >>559
580 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 13:15:06 ] >>579 さぱーりわからん。
581 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 13:20:17 ] >>580 俺もお前が何がわからんのか、さぱーりわからん。 とりあえず >>578 をパターンルール使って書き変えて動かなかった Makefile 晒せ。
582 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 15:28:00 ] %.exe: %.cpp と書いてやれよ からかってるんだろうけど不親切にもほどがある
583 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 16:40:05 ] >>578 SRCS=$(wildcard *.cpp) all: $(SRCS:.cpp=.exe) %.exe: %.cpp gcc $< -o $@
584 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 19:54:01 ] >>582-583 必要な情報はそろっているのに、それだけのものを作れないのは何故か、 知りたかったんだ。スレ汚しスマンね。
585 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 23:19:08 ] >>559 Thx. お猿の訳本しか持ってないんでよくわかんなかったけど、 gmakeのマニュアルをちゃんと読むことにします。 www.ipp.mpg.de/~dpc/gmake/make_93.html
586 名前:デフォルトの名無しさん [2006/04/13(木) 01:08:07 ] gcc では、-Dマクロ指定が出来ますが、make 実行時に、外からマクロ指定を したいと思って、make -DAAA=aaa とかやってもエラーになります。 こういうことはできないでしょうか?
587 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 01:10:04 ] >>586 make CFLAGS="-DAAA=aaa" だったような
588 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 01:12:09 ] ありがとうございました
589 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 23:02:52 ] makeしたら負けかなと思っている
590 名前:デフォルトの名無しさん [2006/05/12(金) 02:30:57 ] rake使ってる人いる?
591 名前:デフォルトの名無しさん mailto:sage [2006/05/12(金) 03:23:14 ] スレタイいいね。 そういう英語の言い回しがあるのかと思ったけど>>1 のオリジナルなのか。
592 名前:デフォルトの名無しさん mailto:sage [2006/05/12(金) 23:36:57 ] Ruby初心者スレより転載 shakenbu.org/yanagi/d/20050214.html#p02
593 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 14:44:26 ] ダセエ名前だな なんでも頭文字にRつけりゃいいと思ってやがる
594 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 15:01:29 ] ほのぼのRake
595 名前:デフォルトの名無しさん [2006/05/13(土) 21:43:16 ] MakefileならぬRakefileだしなw まあでもRuby信者の俺には、けっこう便利よ Rubyに集中できるし
596 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 23:32:46 ] makeとantだけでお腹いっぱいです。
597 名前:デフォルトの名無しさん [2006/06/01(木) 19:07:06 ] 質問。 hoge.txtとmoge.txtを それぞれ、xyzzyというツールで、 hoge.fooとmoge.fooに変換したいとします。 他の.txtというファイルは、別のツールで変換したいので、 .foo: .txt というサフィックスルールは使えません。 その場合、 hoge.foo: hoge.txt xyzzy $< $@ moge.foo: moge.txt xyzzy $< $@ といちいち書かなくてはいけないのでしょうか。 この xyzzy $< $@ という部分を共通化することはできないですか?
598 名前:597 [2006/06/01(木) 19:13:49 ] どんなことがやりたいかというと、 hoge.foo moge.foo: hoge.txt moge.txt xyzzy $< $@ みたいに書くと、hoge.fooとhoge.txtが、moge.fooとmoge.txtがそれぞれ対応してくれないかなー ということです。
599 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 20:49:14 ] >>597 >.foo: .txt というサフィックスルールは使えません。 何で? 「.foo は .txt から作る」 「.hoge も .txt から作る」 でいいんじゃ…?
600 名前:597 [2006/06/01(木) 22:02:56 ] あー、いや、 同時に、test.txtからtest.fooを、qwertyというツールで作りたかったりするんです。 # もしくは、xyzzyツールの別のオプションで、と読み替えられてもかまいません そうなると、サフィックスルールだと、hoge.txtもtest.txtも同じように扱われちゃって。 言葉足りなかったですね。
601 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 00:53:55 ] >>597 FOO_FROM_TXT=hoge.foo moge.foo $(FOO_FROM_TXT) : %.foo : %.txt xyzzy $< $@
602 名前:597 [2006/06/02(金) 01:01:45 ] >>601 すげえ! と思ったけどできませんでした orz make: *** No rule to make target hoge.txt needed by hoge.foo みたいに言われました。 gnu makeだと駄目? こういう機能って、どっかに書いてありますのン?
603 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 01:04:40 ] >>602 hoge.txt はあるのか?ファイルがないんじゃないの? これはスタティックパターンルールっていう構文。 www.gnu.org/software/make/manual/html_node/Static-Pattern.html
604 名前:597 [2006/06/02(金) 01:28:17 ] 簡単なテストプロジェクト作ったら、>>601 で、うまく動いた んー、本プロジェクトで動かないのは、別な要因があるようです(´・ω・`) 探ってみます。 >>603 マニュアルにもちゃんとあるんですね。サンクスです。
605 名前:597 [2006/06/02(金) 02:08:51 ] わかりました。 >>603 のは言っていたのは、正しいです。 本プロジェクトは、hoge.txtがありませんでした。馬鹿だ。 で、どうも根本的にやりたいことを勘違いしておりました orz hoge_foo_bar.txtやmoge_foo_bar.txtを、hoge_test_bar.foo、moge_test_bar.fooにしたいのでした。 つまり、 hoge_foo_bar.txt→hoge_test_bar.txt moge_foo_bar.foo→moge_test_bar.foo という変換をxyzzyというツールで、行いたいのです。 うまいことできないかなー。
606 名前:597 [2006/06/02(金) 02:09:33 ] 違ってました orz hoge_foo_bar.txt→hoge_test_bar.foo moge_foo_bar.txt→moge_test_bar.foo でした。
607 名前:597 [2006/06/02(金) 02:20:15 ] また、違った・・・ hoge_foo_bar.txt→hoge_test_bar.foo moge_foo_qwerty.txt→moge_test_qwerty.foo 真ん中のfooとtestだけ違うんです・・・。
608 名前:597 [2006/06/02(金) 02:25:17 ] %test%.foo: %foo%.txt なんとかかんとか とすると、うまく行かないみたいです。 TARGET = hoge_bar_test.foo moge_xyzzy_test.foo で、 %test.foo: %foo.txt なんとかかんとか だとうまくいきます。 %って2回は使えない罠? 名前を変えるところ(foo→test)を最後に持ってくるしかないのだろうか。
609 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 09:31:03 ] >>608 % はいっこじゃないとだめ。いっこなら、頭でも途中でもいい。
610 名前:597 [2006/06/02(金) 19:23:49 ] 了解です。 ファイル名変更して、 %test.foo: %foo.txt で、いこうと思います。
611 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 23:36:57 ] >>1 超いまさらだけど、スレタイ、せっかくだから頭文字mで統一したら? make makes a massive mess とか。
612 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 23:50:02 ] >>611 語呂が悪い。 make makes many messes のほうがいいかな。
613 名前:デフォルトの名無しさん [2006/08/01(火) 14:00:24 ] 暗黙ルールを使うと ルール連鎖の中で生成された中間ファイルはmakefileにより特別扱いされる。 中間ファイルはターゲットとしては現れず、削除される。 という動作になりますが、これが明示的ルールと同様の動作になるやり方を教えてください。 つまり、 1. 中間ファイルがそのまま残る。 2. (全然別系統もしくは手動による)中途ファイルの変更があったときは、 その中間ファイルからmake処理が行われる。 というようにしたいのです。
614 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 15:09:19 ] >>613 何か勘違いしてると思うよ。 中間ファイルは削除されたんじゃなくて、もともと無かったんだよ。
615 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 21:03:34 ] >>614 makeを実行すると、こちらの書いたルール通りに実行し、 directoryに中間ファイルがたくさん作られているのが見えます。 また、最後に rm hoge huge ......... と中途で生成された大量のファイルをrmしているのが見えます。
616 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 21:57:56 ] >>615 それは「暗黙のルール」じゃないんじゃないか? make -pして、何が問題なのかもう一度考えてみるべし。
617 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 23:29:50 ] >>613 暗黙ルール使わなけりゃいいんじゃね?
618 名前:k ◆WFGp1NZuiw mailto:sage [2006/08/03(木) 21:43:19 ] .PRECIOUS を使うとか. www.ecoop.net/coop/translated/GNUMake3.77/make_4.jp.html#SEC35
619 名前:デフォルトの名無しさん [2006/09/03(日) 21:28:12 ] GNU makeで複数の拡張子に同じルールを適用したい時に何度も同じものを 書かずにすむ方法はないでしょうか。 たとえば以下の3つのルールを1つにまとめることはできないでしょうか。 %.x: %.abc command1 command2 command3 %.x: %.def command1 command2 command3 %.x: %.ghi command1 command2 command3
620 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:32:12 ] >>619 これじゃ駄目か? %.x: command1 command2 command3
621 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:40:54 ] >>620 それだと$<が空っぽで使えませんでした。 commandの中で$<と$@を参照してます。
622 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:46:00 ] >>621 じゃ、続けて %.x: %.abc %.x: %.def %.x: %.ghi って追加すると、解決できないかね? 駄目だったら define 使えばいいんだけどね。
623 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:53:35 ] >>622 それだと %.x: %.ghi だけルールが設定されて、 他のルールはコマンドなしのためにキャンセルされないですか?
624 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:54:44 ] >>623 コマンドなしのルールはキャンセルされるって、どこで仕入れたガセネタだ?
625 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:07:33 ] >>624 勘違いでした。暗黙のルールをキャンセル方法でした. 結局>>622 の方法でも $< は空っぽでした。
626 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:16:37 ] >>625 実際の依存関係を設定してないんじゃないか? %.x: echo $@ $< に続けて a.x: a.abc と書けば a.x a.abc が出力されるだろう。
627 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:38:51 ] >>626 ファイル一つ一つ書かないとダメですか?
628 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:40:41 ] >>627 スタティックパターンルールでもいいぞ。 $(ABC_X_FILES) : %.x : %.abc $(DEF_X_FILES) : %.x : %.def
629 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:58:20 ] >>628 ありがとうございます。できました。
630 名前:デフォルトの名無しさん [2006/09/04(月) 00:15:41 ] makeから、rakeに乗り換えた。 Ruby使いには、rakeはいいねえ。
631 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 17:22:16 ] mingw + GNU make + コマンドプロンプトを使っとる make[1]: Entering directory ... の後に表示されるディレクトリ名を絶対パスから相対パスにしたいんだがどうしたらいい? 結果が長くてうっとうしい うっとうしい以外に害は無いんだけどね
632 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 17:54:27 ] そういうパッチあてなされ
633 名前:631 mailto:sage [2006/09/16(土) 01:52:48 ] >>632 やっぱ大元に手を加えないとダメか パッチ見つからんからソース眺めてみるわ・・・ どうもありがとう
634 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 11:14:28 ] >nmake love Microsoft (R) Program Maintenance Utility Version 6.00.9782.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. NMAKE : fatal error U1073: 'love' のビルド方法が指定されていません。 Stop. 。・゚・(ノД`)・゚・。
635 名前:デフォルトの名無しさん [2006/09/17(日) 16:43:39 ] emacsでMakefile中でもCtr-C,Cを押したらコンパイルする技を 昔ネットで見たのですが忘れてしまいました。 どなたか教えてくれませんか?
636 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 16:52:16 ] >>635 (add-hook 'makefile-mode-hook '(lambda () (local-set-key "\C-cc" 'compile) ))
637 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 17:05:23 ] >>631 そういうフィルタを書くというのは、よくやるなぁ。 ついでに注意すべき warning なんかを強調してみたりとか。
638 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 00:41:47 ] >>630 rakeの日本語の資料はどこを見ればいいのかな? 機能をmakeと対比してあるとありがたい。特に再帰処理関係で。
639 名前:k ◆WFGp1NZuiw mailto:sage [2006/09/30(土) 22:40:57 ] >>638 www.dodgson.org/omo/t/?date=20060901
640 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:08:34 ] >>636 ありがとう。これでコンパイルが大分楽になる。 lispわかんないと一流のプログラマーにはなれないな。 がんばるよ。
641 名前:デフォルトの名無しさん [2006/10/20(金) 21:26:55 ] lispの出来損ないみたい>>makeの文法
642 名前:デフォルトの名無しさん [2006/10/21(土) 06:04:16 ] lisp厨乙
643 名前:デフォルトの名無しさん [2006/10/27(金) 12:04:18 ] 一応確認、まぁ誤植だと思うけど GNU MAKE ttp://www.amazon.co.jp/GNU-Make/dp/4873112699/ 7章 ポータブルなmakefile P129 ・・・次に各プラットフォームごとにどういったツールが使えるのか明らかにし、どれを使うのか 明らかにしなくてはいけません。対象となるすべてのプラットフォームで利用可能なツールや機能だけを 使うのが究極の姿です。これは「最小公倍数方式」と呼ばれ・・・ 数学しなくなってだいぶたつし、原文読んでないけど、 これって「最小公倍数」じゃなくて「最大公約数」だよな?
644 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 15:17:43 ] >>643 原文見てないけど、「最小公分母」の誤訳でしょ。
645 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 19:04:49 ] nmakeってsubstとかpatsubstに相当するものないの?
646 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 23:58:48 ] 暗黙のルールで hoge.cc -> hoge.o -> hoge の順番に作りたい時、 hoge.o -> hoge のときにg++じゃなくてccになっちゃうんだけど、 これってCC=g++にしておくしかない?
647 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 10:32:31 ] >>646 何が不満だ?
648 名前:646 mailto:sage [2006/12/04(月) 02:15:54 ] >>647 .cも混在してるときに、.cもg++でcompileするでしょ。 そのときに生成されるhoge.oが、 g++ -c hoge.c -o hoge.o cc -c hoge.c -o hoge.o で全く同じものになるのかが分からなかったので。
649 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 10:29:19 ] man gccしてみろ。
650 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:55:28 ] >>648 ccでリンクできてるなら、それでまったく問題ない。 g++のときは暗黙に -lstdc++ がつくだけ。
651 名前:デフォルトの名無しさん [2007/01/04(木) 21:43:34 ] a.cpp, b.cpp, c.cpp, ... とファイルが沢山あるとき、各々のファイルに対してgrepした結果を a.log, b.log, c.log とログにしたいんだけど、どうかけばいいですか? INFO: grep COMMENT $(SRCS) > $(LOGS) みたいにやったら全部のソースを一変にgrepしようとしやがりました。 そうじゃなく個別にやりたいです。
652 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 01:32:28 ] それは make でなくシェルスクリプトの話かと。 for i in *.cpp; do grep COMMENT $i > `echo $i|sed -e 's/\.cpp/.log/'`;done とか。
653 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 10:41:05 ] 拡張子がcppとlogに決まっているなら、サフィックス・ルールを使用する方法もある。 www.ecoop.net/coop/translated/GNUMake3.77/make_10.jp.html#SEC102
654 名前:デフォルトの名無しさん [2007/02/13(火) 22:23:13 ] rakeってC++をmakeできますか?
655 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 19:27:32 ] ___/ 冫 ∧_∧ ∧_∧ _ __ (_ / (´∀` ) ( ´∀`)/ ) ) | | // \ ( ⊃/ // ∧_∧ (__(_/` | \__// ( ´∀`) _///  ̄ ∪ ̄∪ (__(__)
656 名前:デフォルトの名無しさん [2007/02/15(木) 03:19:04 ] >>654 makeの意味わかってる? gccでコンパイルとか言うのなら、rakeでできるよ。 Makefileがあって、それをmakeしたいのなら、rakeではできない。 makeを使おう。
657 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 20:52:50 ] makeは簡単だけどautotoolが全然わからねえ。 まじむずい。autoconf、automake、Makefile.am Makefile.in、configure.inまじややこい。
658 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:43:13 ] >>657 最初は手書きMakefileでいいさ。
659 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 04:52:13 ] おれもmakeはいいけどautotoolsキライ makeごと捨て去ってもいいんだけど なんか他にいいビルドツールないかな?
660 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 11:07:14 ] 階層が錯綜してるときのmakeって書くのにうんざりするんだけど、 もっと楽ちんなものないのかなあ。
661 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 13:27:03 ] rakeとantくらいしかとっさには思い出せないな……
662 名前:autoXXの癌はlibtoolだと思う mailto:sage [2007/02/22(木) 01:07:50 ] 共有ライブラリを作らないんだったらautoconf, automake は大体OKだけど。共有ライブラリを作ろうとすると否応無しにで出てくるlibtoolが大嫌いなので書いてみる。 libtoolはクロスコンパイルで「共有ライブラリとそれを利用する共有ライブラリから構成されるパッケージ」を作ることを殆ど考慮してない。 クロスコンパイルだとインストール先ターゲットは/hoegeho/foo/bar とか適当なやつにならざるを得ないケースが多い。 とても/usr/* などにはしてられない。ところがそういう環境だとmake install で「パスのプリフィックスが違います」 エラーが出るわけですよ。実にくだらないんです。だってWindowsだとチェックしないんですから。非Windows環境でやってると結構はまります。 個人としては人生の無駄だし、法人としても無駄なコストです。 その嫌がらせチェックをしている3行程度をコメントアウトすれば平和になるワケだけど。 そうしないと、クロスコンパイル環境でまともに通せるようにするには、 1. 共有ライブラリをnoninst_LIBRARIESにして 2. 展開後のMakefileのルールをMakefile.am に書いてmakeさせ 3. 展開されたあとのinstall処理をMakefile.am に書いておく くことになるんです。実に馬鹿げてます。本末転倒です。 もしあなたが共有ライブラリを作成してそれをデバッグする必要があるのでしたら、普通に(automakeではなく)伝統的な手書きの makefile を作成してください。 テスト対象の共有ライブラリは -rpath オプションを使ってテストプログラムにリンクしてください。そうすればあなたは最初から共有ライブラリ内にブレークポイントを 設定できるでしょう。変なシェルスクリプトを噛ます必要は無いのです。 autotools、特にlibtoolは開発者のためのツールではないと認識することが大切です。
663 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 05:00:53 ] 仕事でjam使ってます。サッパリわかりません
664 名前:デフォルトの名無しさん [2007/04/24(火) 17:30:42 ] Rake www2s.biglobe.ne.jp/~idesaku/sss/tech/rake/index.html rakeの日本語資料が少ないので、ここいいですね。
665 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 20:42:09 ] >>664 Makefileより見た目ゴチャゴチャしててなんかいやだな。
666 名前:デフォルトの名無しさん [2007/04/24(火) 21:33:43 ] >>665 見た目も何もRubyプログラムそのものですからね Ruby知ってたら、すごい楽できるよ
667 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:34:27 ] >>665 ゴチャゴチャしてるという印象はこのへんかね。 ターゲット(タスク)を裸で書けない(文字列かシンボルで書く) ファイル名単独じゃなくて、いちいちfileと書く :ではなく=> doとかendとか付ける 外部コマンドをそのまま書けない >>664 ダグラス・アダムズネタが混ざってるな 。
668 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:46:49 ] Cプログラマ向けにCの文法で書けるCakefile(ケーキファイル)なんての を妄想してみたが、Rubyだとブロックで書くところを関数に抜き出さないと いけないから書きにくいな。C++でboost使うとlambdaっぽいことができる からマシになるのかな。
669 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 21:50:45 ] lakeやらpakeが強いかも。元々適当な言語だし。
670 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:06:16 ] lakefileは普通のプログラムと見かけ大差なさそう。 pはperlだろうが lispつながり(?)でprologを連想。 ホーン節って依存関係定義そのものだな。
671 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:31:43 ] dake
672 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 23:47:56 ] やっぱ俺Makefileでいいや・・・
673 名前:デフォルトの名無しさん [2007/04/25(水) 01:23:22 ] delake VBake make#
674 名前:デフォルトの名無しさん [2007/04/25(水) 01:37:29 ] >>634 つ♥
675 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 15:04:25 ] rakeで依存関係をgccに解決させたりしてるときにどう持ってくればいいんだ?
676 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:31:46 ] >>675 makedependってこと?
677 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:40:32 ] require 'rake/loader/makefile' file '.depend.mf' => そーす do |t| sh 'gcc -M ...' end import '.depend.mf' だろうか。
678 名前:デフォルトの名無しさん [2007/04/25(水) 23:22:53 ] >>664 も参照
679 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:50:56 ] >>676-678 importで導入できるんだね、ありがと
680 名前:奉祝スレ5周年 [2007/08/17(金) 21:40:54 ] GNUmakeで--debug=のコマンドで使用できるフラグについて 資料or情報はありませんか? 片っ端からトライしたところ iajvbm の6文字が何らかの機能を 持っているようですが。 巨大makefileのデバッグに使用したいです。 > make -v GNU Make 3.81 : : This program built for i686-pc-cygwin >
681 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 22:00:45 ] 普通に info に載ってるけど。 man にも簡単な説明が出てる。
682 名前:デフォルトの名無しさん [2007/08/23(木) 02:41:13 ] このスレ見ててもグチばっかだし、ほんとにmakeって使えないと思う。 (autotools含めてバッドノウハウの塊だと思う) 何故代替品は出てこないんだろう? オープンソース界隈で普及しすぎて、デファクトになっちゃったのが原因なのかね。 マイクロソフトの独占なんかより、makeの独占を禁止してほしい。
683 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:45:27 ] >>682 ant, bjam, rake, SCons とかは代替品とは言わんの?
684 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 05:44:05 ] autotoolはともかくmakeは無いと困るだろ。
685 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 22:06:01 ] >>682 makeも使えない奴はたいしたコードはかけないし、 make使える奴は代替の必要を感じない そういう意味でsubversion開発者は実に偉大だ
686 名前:デフォルトの名無しさん [2007/08/26(日) 22:45:52 ] >>682 rakeつかってる
687 名前:デフォルトの名無しさん [2007/09/05(水) 19:03:57 ] Rakeのユーザーガイド見つけた RakeUserGuide - Rake ユーザガイド www.kyobashi.org/hf/RakeUserGuide/?AboutRakeUserGuide ___ ,;f ヽ i: i | | | | ///;ト, | ^ ^ ) ////゙l゙l; ありがたや〜 (. >ノ(、_, )ヽ、} l .i .! | ありがたや〜 ,,∧ヽ !-=ニ=- | │ | .| /\..\\`ニニ´ !, { .ノ.ノ / \ \ ̄ ̄ ̄../ / .|
688 名前:デフォルトの名無しさん [2007/10/03(水) 18:54:33 ] makeが成功した後に自動的にcleanを実行するようにすることはできませんか?
689 名前:デフォルトの名無しさん [2007/10/03(水) 19:00:26 ] make allの最後に、make clean呼ぶようにするだけでは?
690 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 19:48:03 ] >>689 作った物消すのって何したいん?、コンパイルチェックだけ?
691 名前:デフォルトの名無しさん [2007/10/03(水) 20:25:19 ] ただ、FreeBSDのportsシステムのmakeファイルにはうんざり
692 名前:デフォルトの名無しさん [2007/10/16(火) 09:10:29 ] WindowsでMakefileをダブルクリックで開けるようにはできないでしょうか?
693 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 10:52:08 ] >>692 できるよ ただし他の拡張子のついてないファイルもダブルクリックでmakeされちゃうけど
694 名前:デフォルトの名無しさん [2007/10/27(土) 01:05:58 ] >>692 >>693 の問題があるので、俺は、適当に、batファイル書いて、クリックしてるけど cygwinコンソール開くの面倒な時も多々あるw
695 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:15:09 ] Makefile.mak にすりゃいいんだ
696 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 23:42:59 ] >>688 make all clean
697 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 15:20:37 ] 質問させてください。 サフィックスルールで、元と後が同じ拡張子のものはかけますか? 現在画像からサムネイルを作るMakefileを作っています。 1度すべて作った後は元画像が変更されたもののみ作りなおしたいです。 現状以下のように各ファイルに対して1ルール作っています。 THUMBNAIL/001.JPG : IMG/001.JPG convert -geometry 150x150 IMG/001.JPG THUMBNAIL/001.JPG THUMBNAIL/002.JPG : IMG/002.JPG convert -geometry 150x150 IMG/002.JPG THUMBNAIL/002.JPG これをサフィックスルールで「.JPG.JPG : 」のように書きたいのですが、 元と後が同じだとうまくいきません。 どうかよろしくお願いします。
698 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 15:48:00 ] >>697 それ循環定義になるならムリだと思う。 ただ現実的な解決方法としては jpeg と jpg にしてしまうとか。 もしくは 一旦別の拡張子のファイルを touch して jpg -> jpg コンバートかますとかならやれそう
699 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 15:51:55 ] >>697 THUMBNAIL/%.JPG : IMG/%.JPG convert -geometry 150x150 $< $@
700 名前:697 mailto:sage [2007/12/24(月) 15:56:38 ] >>698 ありがとうございます。 >もしくは 一旦別の拡張子のファイルを touch して 初めに思いついたのがこれだったんですけど、これだと一時ファイルをとっておく必要があるんですよね・・・ >jpeg と jpg にしてしまうとか。 これがいいですかね
701 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 15:58:03 ] >>697 全然サフィックスルールじゃないけど SRCJPG = ${shell ls IMG/*.JPG} ${SRCJPG}: TUMBNAIL/%.JPG: IMG/%.JPG: convert -geometry 150x150 $< $@ という感じじゃダメかな。 (Windowsならlsをdirとかに変えて)
702 名前:697 mailto:sage [2007/12/24(月) 16:14:05 ] >699,701 これだ!ありがとうございます! うまくいきました
703 名前:デフォルトの名無しさん [2007/12/30(日) 12:19:08 ] makeで普通.cppを修正するとそこだけコンパイルしてくれますよね? .hを修正してもコンパイルしてくれないのですが、どうしたらいいですか? 誰か教えて
704 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:22:59 ] 依存関係が足りないから。 $ g++ -MM で出てくる依存関係をMakefileで読み込むようにしとけ
705 名前:デフォルトの名無しさん [2007/12/30(日) 13:59:11 ] b.x: e.x a.x: b.x c.x d.x %.z: %.x hoge $^ のようなルールを記述して make a.z を実行したときに, hoge a.x b.x c.x d.x e.x というコマンドを走らせることはかのうでしょうか? a.z: a.x b.x c.x d.x e.x というルールを記述することは避けたいです.
706 名前:デフォルトの名無しさん [2007/12/31(月) 15:47:10 ] age
707 名前:デフォルトの名無しさん [2007/12/31(月) 16:53:06 ] 阪大外国語学部の椿原慎二くんは昔からゴム付けてくれませんよ。 なんか顔もゴリラなんだけど、あのときはまさに野獣になって、日本語もさえも通じなくなる。 まがりにも外国語学部イタリア専攻で行ってるんだけど、あれじゃ外国語とか言うよりもゴリラ語。 きっとボブサップもあんな感じなんだろうな。ただ椿原慎二のチンコはサップに比べると小さいし臭いけどね。
708 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 22:50:40 ] こ こ で も 椿 ○ 粘 着 か 年の瀬だっちゅうのに悲しくないのかね
709 名前:デフォルトの名無しさん [2008/01/08(火) 20:41:34 ] UNIX Cシェルのmakefileで、 外部の環境変数が設定してあるファイルを makefileの中から読み込むことって出来ますか? 出来るなら方法を教えてください。
710 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 12:43:51 ] include 実例が見たければ、linux のソースなんかで使われているので grep -n include /usr/src/linux/Makefile でも汁
711 名前:デフォルトの名無しさん [2008/01/10(木) 21:44:05 ] >>710 おお。ありがとうございます。助かりました。
712 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 15:08:09 ] 働いたらmakeかな?
713 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:06:10 ] GNU makeなんですが、 CC=bcc32 all: ${CC} hoge.c というようなmakefileを実行する時に make -e CC=gcc として${CC}をgccに変更して実行させたいのですが、うまくいきません。 コンソールにそのまま gcc hoge.cと表示されてしまいます。 -eで書き換えた変数はサブシェル?として実行されないのでしょうか・・・?
714 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:23:19 ] すいません。>>713 です。 makeよぶシェルに-nつけてました。アホでした。
715 名前:デフォルトの名無しさん [2008/02/01(金) 19:39:29 ] gccとmakeで並列コンパイルはできますか?
716 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 21:44:28 ] >>715 makeの-jオプションのことでいい? それとも、複数のホストで分散コンパイルするという話なら distccでぐぐるといいかも。
717 名前:デフォルトの名無しさん [2008/02/13(水) 15:12:44 ] nmakeが常に、すべてのソースをコンパイルしようとします。 最新のものはコンパイルしないようにするにはどのようにしたらよいのでありましょうか?
718 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:24:18 ] Makefileを確認したら?
719 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:48:25 ] >>717 依存関係の書きかたを間違えてるんじゃないの?
720 名前:デフォルトの名無しさん [2008/02/19(火) 08:37:35 ] OSによって、gccとclを使い分けたいのですが、LinuxとWindowsによってコンパイラを変えるにはどのようにしたらよいのでしょうか?
721 名前:デフォルトの名無しさん [2008/02/19(火) 09:48:35 ] >>720 C++ sourceで書けばいいんじゃね?
722 名前:720 mailto:sage [2008/02/19(火) 10:18:42 ] もう少し詳しく教えていただけないでしょうか? ifの様な構文を使って CC=cl と CC=g++ を切り替えたいのですが
723 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:41:37 ] >>720 ,722 どのmakeをお使いですか? GNU make、BSD make、nmake、それぞれやり方が違うと思われ。
724 名前:720 mailto:sage [2008/02/19(火) 11:14:26 ] GNU makeとnmakeです。
725 名前:デフォルトの名無しさん [2008/02/19(火) 11:27:07 ] つか、nmakeとGNU makeって全然違うようなキガス
726 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:41:48 ] そうなのですが、それに対して、同じMakefileを使えるようにする方法はないものかと思案しています
727 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:43:08 ] なにか方向を間違っているような気がします.
728 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:45:00 ] >>724 共通のMakefileではムリじゃないかなあ。 条件分岐はGNU makeだとifeq/ifdef、nmakeだと!IF/!IFDEFだし。 ふつうは、プラットフォーム毎にMakefileを用意したり生成したりする のではないかと。
729 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:09:40 ] >>724 makefileスレに行け。 pc11.2ch.net/test/read.cgi/tech/1029599472/
730 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:30:10 ] これは・・・・いったい・・
731 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:33:17 ] 1.気の利いた洒落のつもり 2.くだ質スレだと勘違いした 3.じつは人類滅亡の予言
732 名前:デフォルトの名無しさん [2008/02/19(火) 13:38:57 ] ヘ ,ヘ / ヽ, ::. / ::. / :::. ″<●> <●>::. | 、_,、_, ::::. | !.ノ ::::::::: / ..::::. / :::::
733 名前:729 mailto:sage [2008/02/19(火) 13:47:30 ] 正解は2番……_/ ̄|◯
734 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 16:50:40 ] 普通は makefile.vc makefile.gcc makefile.cygwin makefile.tcc makefile.pl makefile.rb makefile.cobol のように分けますね
735 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:36:18 ] jオプションで並列コンパイルをしています。 これを毎回指定しないでも並列コンパイルする方法はないでしょうか? OSはFedora8、コンパイラーはintel10です。
736 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:40:30 ] なぜその方法を知りたいのかが知りたいなぁ。
737 名前:デフォルトの名無しさん [2008/02/19(火) 18:50:15 ] alias make='make -j'
738 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:03:08 ] あなたは奇妙な感覚に包まれた -more-
739 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:19:30 ] >>735 GNU make自身には-jのデフォルト値を変える手段はないですね。 737みたいにエイリアスにするか、シェルスクリプトにするか。
740 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:29:22 ] cmakeとsconsのが綺麗でよいよな。 linuxカーネルとかbbみたいなオプション出てこないのもよい。 見た目だけでしか判断できないので。
741 名前:デフォルトの名無しさん [2008/02/26(火) 23:51:30 ] #ifdef AAA (コード) #endif みたいなのがソース中に書いてあって、これをmake時に、define したいのですが、 $ make CFLAGS="-DAAA" とすると、もとのMakefileで指定されていたCFLAGSが 上書きされてしまいます。CFLAGS+="-DAAA" のように追加指定で make 時の コマンドライン上で指定って出来ないのでしょうか?
742 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:41:38 ] CFLAGSはユーザーが定義するものだから、Makefile側ではそのまま使わない。 $(CC) $(CFLAGS) $(MYCFLAGS) -o (ry
743 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:52:52 ] *.ppmとか*.pnmといった各種画像から*.jpgを生成したいのですが、 .pnm.jpg:; cjpeg-mmx $^ > $@ .ppm.jpg:; cjpeg-mmx $^ > $@ .pgm.jpg:; cjpeg-mmx $^ > $@ .pbm.jpg:; cjpeg-mmx $^ > $@ # 特定ファイルについて特別な変換をする場合は明示的に書く hoge.jpg: hoge.ppm convert -normalize $^ $@ のようにサフィックスルールを沢山書くのではなく、 %.jpg: $(wildcard %.pnm %.ppm %.pgm %.pbm) cjpeg-mmx $^ > $@ # 特定ファイルについて特別な変換をする場合は明示的に書く hoge.jpg: hoge.ppm convert -normalize $^ $@ のようにルールを動的に作り、コマンド列は一箇所にだけ 書けばいいようにしたいと考えています。 上の %.jpg: $(wildcard ...) は、まあ、動かないのですが、 何かうまく動かす方法はないでしょうか?
744 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:37:47 ] filter-out あたりをつかって別に分けるかなぁ。
745 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:57:27 ] 要は %.jpg: $(wildcard %.pnm %.ppm %.pgm %.pbm) のルールが実行時に hoge.jpg の依存関係を調べる瞬間に 展開されてほしいわけで、 %.jpg: $(filter %.p*m,$(PNMFILES)) なども考えましたが、ルール右側で関数を呼びつつ、その引数として 左側のパターンのファイル名を渡す方法がどうもわからないのです。 makeを触るのは数年ぶりで、正直簡単なことに詰まっているだけなのか、 それとも元々難しいのか判断に迷ってここに質問してみました。
746 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 11:39:37 ] 去年までUNIXでMakeをばりばりに使っていました。 # あ、プログラマじゃないよ。大規模プロジェクトの管理だけどね でもちょっと部署が変わって Windowsなどという邪悪な環境下お仕事する必要が生まれました。 Windows XPで使いたいのですが、どこからmakeをだうそ出来るですか? つまらない理由で、コンパイルさせてもらえないので、バイナリで だうそしたいです gmakeでもBSDの旧makeでも何でもいいです
747 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 11:48:52 ] >>746 日本語でOK。 考えられるのは、MS謹製のVisualStudioについてくるnmakeかCygwinのgnu-makeかね。
748 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 12:51:51 ] >>747 ありがと でも私は日本人ですから日本語不自由ありません
749 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:05:23 ] 人に質問するような文章なら、最低限以下の注意くらいしてもよかろう。 ・句点を忘れずに。 ・奇妙な造語は避ける。 ・読む人間の視点で冷静に読み直す。 処で、コンパイルさせて貰えないのに拾ってきたツールは使ってもいいの?
750 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:52:28 ] >>746 msysにバイナリのgmakeが入ってる Current Release: msys-1.0.10 (2004-03-16 05:47)を落とすよろし