make makes many problems
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNG日本語のまともな資料ないし・・・。
だれかもっと便利でわかりやすいビルドツール作ってくれって感じ?
参考リンク
http://tanaka-www.cs.titech.ac.jp/~euske/doc/make_qref.html
http://www.tk.airnet.ne.jp/nagae/jp/comp/make/makefile.html
http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/makefile.html
http://kanon.plala.jp/develop/makefile.html
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/make-intro/simplest.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGクソスレだけどスレタイ気に入った。
0008デフォルトの名無しさん
NGNG00091
NGNGありがとうございます。
日本人相手なら早口言葉としても使えます(多分)
MMMP と覚えてください。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG結構期待してたわん。
0012デフォルトの名無しさん
NGNGそうすりゃ方言なんて気にしなくていいだろ。
0013デフォルトの名無しさん
NGNGVC++のメニューに
メイクファイルのエクスポート
ってのがあることを思い出した。
あれはイイもの?普通?クソ?
(自分が使う機会があるかどうか微妙だけどとりあえず聞いてみる)
0015デフォルトの名無しさん
NGNGよきにはからってくれたようなきがする。
automakeで生成したMakefileがHI-UXのmakeでも通ったし。
0016デフォルトの名無しさん
NGNGなんでmakeごときがあんなに複雑(そう)になるのかね?
0017question
NGNGするとディレクトリの中に短く単発のソースとバイナリがいっぱいできます。
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バイナリになっているので可能な気がします。
0018shige
NGNG新しいファイルがディレクトリにあった場合Makefileを更新するツールを
スクリプト言語で書いた方が手っ取り早いだろう。
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021shige
NGNG0022デフォルトの名無しさん
NGNG>>1 のページに書いてあるようなことは卒業した人にお勧め。
0023デフォルトの名無しさん
NGNGシステムの全ての必要な要素について、
それがあるか?、またそのバージョンは?
って調べていくんだから、そりゃ大変な作業だろ。
Windowsみたいにまとまってねーんだよ。UNIXは。
微妙な差異がものすごくめんどくさい。
0024デフォルトの名無しさん
NGNGWindowsだってまとまってねーんだよ。
NTと95は全くの別物。
0025デフォルトの名無しさん
NGNGいや、それは 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])
するだけで結構うまくいったりするが、どうよ。
高度な事すると結構面倒だけどね。
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGうちの会社、ソースはC++だけどAntでビルドしてるけど、それって異端?
0028デフォルトの名無しさん
NGNGJavaならね。
UNIXはMakeの資産があるからAntが使われることはないと思う。
002927
NGNG0030デフォルトの名無しさん
NGNG実行形式がJavaってだけで、動かないプラットフォームがでてくるし。
研究室の古株のDigitalUNIX(not Tru64)、IRIXの古いの、HI-UX、HP-UXあたり。
ライセンスとかハードウェアの関係で最新OSにすることはできないことが多い。
0032デフォルトの名無しさん
NGNGUNIXの連中ってアフォばっかりだな
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG(´-`).。oO(そんな会社にいたんかぁ)
0035デフォルトの名無しさん
NGNG融通効くからじゃない?行頭のTabを忘れなければ…。
ビルドの為に手間をかけるのが面倒だったからかもしれんし。
>>33
Lispでmakeに相当するもの…ですか?
0036
NGNGC++だとmakedependしたいからやっぱりmake
0037デフォルトの名無しさん
NGNGmake depend って、私はいつも gcc -MM でやってるんですが、
他に何か定石的なやり方ってあります?
0038デフォルトの名無しさん
NGNGんでpre/postな処理はsh/perlあたりでやればすっきりするはずだよ。
makeって機能が貧弱なわりに(そのせいでか?)人によって
書き方がかなり変わってきてメンテしづらいんだよな。
0039デフォルトの名無しさん
NGNG環境変数との関係とか
make依存の痴漢ルールとか
そのへんがイヤン
0040デフォルトの名無しさん
NGNGXのmakedepend
0041デフォルトの名無しさん
NGNGだから makeで外部的に一生懸命書く必要があった。
まあ、逆に Cが貧弱だから、あの程度の仕組みで分割コンパイルの
恩恵にあずかれたのかも。
C++なんか、分割コンパイルをまともに働かせるようにするの
大変そうだし。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGとはいえUNIX的ミニマリズムはいい加減古びつつあるような。
PerlやApacheなんかは単体のツールとしてどんどん複雑になっていくように
他のツールも高機能化・複雑化していくのは自然な流れでしょう。
>>42
それがよくない
make setupなんてやるなら
bash setupにしてくれよ。
0044デフォルトの名無しさん
NGNGサンクスです。makedepend ってツールの名前だったのね。
ちょっと使ってみたけど、たしかに速い。
あと、gcc -MM みたいに、< > で囲んだやつは無視して
くれるともっとよかったけど。
0045デフォルトの名無しさん
NGNG自分でツールを作りながら処理するような場合は、やっぱり
makeの枠組で出来た方が有難い。
0046デフォルトの名無しさん
NGNG勝手にされたらされたで不満がでるはず。
0047デフォルトの名無しさん
NGNGmake setupなんて見たことないぞ。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGあれはmakeと呼ぶのもおこがましいが...
0050デフォルトの名無しさん
NGNGmakeと呼べる基準って何?
0051デフォルトの名無しさん
NGNG0052gmake
NGNG| |-- Makefile
| |-- sample.xml
| |-- mona.c
| `-- mona.h
|-- 2ch.so
↑のようなディレクトリ構成の時、
既にある2ch.soを用いてmonaディレクトリでmakeして、
monaってsoつくりたいんですけど、どーやればいいんでしょうか?
誰か助けてください。
0053gmake
NGNG0054デフォルトの名無しさん
NGNG$CFLAGSで出力先を変えればいいだけじゃないの?
-o オプションかね。
005552
NGNGんーっと、
|-- mona
| |-- Makefile
| |-- sample.xml
| |-- mona.c
| |-- 2ch.so
| `-- mona.h
2ch.soの生成をこうスレって話ですか(?
上の階層のアドインみたいな形にしたいんですけど、毎度コンパイル
しないと駄目なんすかね?
(既にあるのでそれを活用したい)2ch.so生成するルールがねーぞ、
ゴルァってでまふ。
0056デフォルトの名無しさん
NGNGあなたの日本語が理解できないのだが、
-o やら -L やらで簡単に解決する話のような気がする。
0057デフォルトの名無しさん
NGNG> (既にあるのでそれを活用したい)2ch.so生成するルールがねーぞ、
> ゴルァってでまふ。
ライブラリパスの設定するだけかも。
2ch.soを作成するのは?ってことならlibtoolでも使ってくれ。
005852
NGNGさんくすこ>56-57
0059デフォルトの名無しさん
NGNGってのを思いついた。そんだけ sage
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGだったらいいなぁ
0065デフォルトの名無しさん
NGNGmake的な機能が統合されてるよ。
思うにUNIXにOOPLが普及してmakeクラスがあればもっと使いやすくなるのでは。
0066デフォルトの名無しさん
NGNGmakeクラスってどういう意味?
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGWindowsで, makeなんて使いモノになるの?
Windowsで仕事したことないから分からんのだけど, だれかおせーれ.
0069デフォルトの名無しさん
NGNG> Windowsで, makeなんて使いモノになるの?
libtiffをVC++6で利用するためにnmakeを利用したけど、
自分でhoge.makを書く気にはならんかった。
0070デフォルトの名無しさん
NGNGcygwin使え。
0072デフォルトの名無しさん
NGNGだからcygwinは イイ(・∀・)!! わけで。
CUIが好きなのにWindowsを使う人はmake犬。
0073デフォルトの名無しさん
NGNGUNIXの欠点はすべてのコマンドがプロセス毎に独立してしまっていて
通信手段は貧弱なパイプしかない。
そこでmake, sort, grep等のコマンドをすべてクラス化してしまって
同一プロセス内で使えるようにすればもっと使いやすくなるのではと推測してみる。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGパイプとソケットだけではもうまともなアプリは作れないよ。
プロセス・ネット越しにオブジェクト間でお話できないとね。
0076デフォルトの名無しさん
NGNGmake を起動した後でどこかのディレクトリに潜って(depして)
元のディレクトリの内容を変更したんですが
正しくディレクトリの変更が反映されていないみたいなんです。
元の gmake にもう一度ディレクトリ内のファイルの依存関係を
読み込ませるにはどう指示すべきでしょうか?
0077デフォルトの名無しさん
NGNGpipe とかの上でも、HTTP とかの protocol を使えば、お話自体はできるはずなんだけど…
誰かがそんな library 作って広めない限り、話しかけても相手にされないんだよね…
PID か何かを元に、それぞれが互いに話しかけたりできればいいんだけど…
0078デフォルトの名無しさん
NGNGC使うとソースとは別にmake書かなきゃならないんで「なんでこれくらいのことやってくれないんだ」とイライラしてくる。
そのくせコンパイル速度も遅いし。
0079デフォルトの名無しさん
NGNGVC++にあるけど、あれがあれば開発中にコンパイル速度に悩むことは無いと思うが。
0080デフォルトの名無しさん
NGNG大規模ならautoconf,automakeで済ませればいいから体した手間ではないと思うのだが…。
0081デフォルトの名無しさん
NGNGもうちょっと具体的に書いてくれないと答えられないよ。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG> 意外とデフォルトのルールだけでうまくいったりして ...
ライブラリとかあると,なかなかそういうわけにはいかないよね.
0085デフォルトの名無しさん
NGNGどのサイトが一番いいの?
0086デフォルトの名無しさん
NGNG死のうっと。
0087デフォルトの名無しさん
NGNGシェルスクリプトみたいなので、そのままじゃ動かないですよね
0088デフォルトの名無しさん
NGNG> 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とソースの管理がウザイんでこの手を使うこともある。
0089デフォルトの名無しさん
NGNGPascalにUNITなんてものは規定されていない罠。
0090デフォルトの名無しさん
NGNGmake 間で統一されてればなーと思いませんか ?
あー、それは確かに思うね。普段はGNU make使ってるから気にならないけど、他のmake使うと途端に困る…w
0092デフォルトの名無しさん
NGNG009390
NGNGSolaris 6 (7 かも) の /usr/ccs/bin/make の suffix rule って, 例えば
.c.o : rule っていう感じなんですね.
.c.o :
rule
ではだめみたい. 特定の make に依存しないように, デフォルトのマクロの挙動に
気を使って Makefile を書いてたけど, その努力は意外なところから破綻してしました ...
0094デフォルトの名無しさん
NGNG> automakeってヘッダの依存まで調べてくれるの?
$ gcc -M hoge.c
で出力される程度には調べてくれます。depcompが調べてくれたと思います。
0095デフォルトの名無しさん
NGNGhttp://www.gnu.org/manual/autoconf-2.53/html_mono/autoconf.html
http://www.gnu.org/manual/automake-1.6.1/html_mono/automake.html
0096デフォルトの名無しさん
NGNG> ちょほいと勉強しようと思ったけど長すぎて読んでられないよ
texinfo-4.2を使っているなら、それぞれソースを持ってきて
$ makeinfo --html auto*.texi
すると分割されるが、って、全体の長さは変わらないけどね。
GNUjdoc (ttp://openlab.ring.gr.jp/gnujdoc/)には日本語訳も
あるみたい。
0097デフォルトの名無しさん
NGNGGnomeは単なるGUIシェルだと思ってるのか?
0098デフォルトの名無しさん
NGNGどうしたらいいでしょうか?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:
よろしくお願いします。
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGなんかmakefile以前の問題のような。
望むような動作をバッチファイルで書ける?
010198
NGNG望む動作をバッチファイルで実現できたら 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 にしたいです。
0102デフォルトの名無しさん
NGNGmakefile :
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 .
0103デフォルトの名無しさん
NGNGもっと具体的に書いてくれないとわかんないよ。
010498
NGNGいやーお兄さん一本取られちゃったな。
> 望む動作をバッチファイルで実現できたら make は使いませんが…
を優先ですか、さすが!
っていうか、マジレスキボンヌです。
ちゃんと依存関係を調べて make できる makefile の書き方を教えてください。
よろしくお願いします。
010598
NGNGsrc 内に .c や .cpp ファイルがあって、
include 内に .h があって
これらのファイルをコンパイルして
最後にリンクして、できあがったファイルを bin の中に入れたいのです。
よろしくお願いします。
0106デフォルトの名無しさん
NGNG#
CFLAGS = -ansi
0107デフォルトの名無しさん
NGNGそれだけではどんな統合環境でもメイクできないのでは。
リンクしてできあがるファイルが何なのかさえわからないじゃん。
0108デフォルトの名無しさん
NGNG暗黙のルールに依存しないで
すべてのソースを明示的にコンパイルすりゃできるけど
そんなの面倒だから全部同じディレクトリにしとけ。
んでmake installでバイナリだけコピーすりゃいいよ。
010998
NGNGいや、ファイルの種類や、取り扱いに使うコマンドはどうでもいいのです。
make の書式について知りたいのです。
とりあえず上記例でも出しているのでコマンド等は下記のように仮定してもらっても結構です。
できあがるファイルの種類 *.exe
ソースの種類 *.cpp
ソースが依存しているファイルの種類 *.h
コンパイルに使用するコマンド cl.exe
リンクに使うコマンド link.exe、
コンパイル時に常に引き渡すオプション -c -GX -GR
リンク時に常に引き渡すオプション なし
cl.exe に出力ファイルを指定する為のオプション -Fo
link.exe に出力ファイルを指定する為のオプション -out:
よろしくお願いします。
0110デフォルトの名無しさん
NGNG知りたい make の書式とはどんなやつのこと ?
011198
NGNGまともなレスありがとうございます。
暗黙のルールの中にはディレクトリは指定できないという事でしょうか?
011298
NGNGえっと…、「書き方」です。
.cpp ファイルが src というディレクトリ内にあって、
.h ファイルが include というディレクトリ内にあって、
.obj ファイルが obj というディレクトリ内にあるんだよ。という事を
make に教える方法というか…。
0113デフォルトの名無しさん
NGNG手っ取り早いのは vpath でサーチするディレクトリを追加じゃない?
bin に ふつーに Makefile を書いて vpath で include や src を追加したら
それらのディレクトリも見てくれる。
厳密にやりたいなら、スクリプトの助けがいりそう。
おいらは素人なので偉い人ならもっとスマートにできるかもしれないけど。
0114デフォルトの名無しさん
NGNGで, 113 の言うとおり VPATH で指定すればいいんですけど,
お使いの make にその機能はありますか ?
011598
NGNGCPP_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:
011698
NGNG# Mozilla 1.0 ってちょっとバギーですよね…。
# .9.x の頃のがしっかりしてたな…。
>>113-114
無学なもので vpath という物を知らないのですが、
独立したコマンドでしょうか? make のオプションでしょうか?
0117113
NGNG具体的に言うと shell でディレクトリに潜って ls でリストを変数にいれて
addprefix で bin/ なり src/ なり include/ obj/ なりを付け加えて
それを Makefile.hogera で出力して $(MAKE) -f Makefile.hogera
ってする。
0120113
NGNGやっぱ偉い人がツッコミいれてくれないとイマイチだな…。
0121デフォルトの名無しさん
NGNGそれに凝ったmakefile書く奴ってく非生産的なのが多いので
makefileはシンプルに。つかVC使えよ。
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG低レベルなム板で頑張っても無意味。unix板に帰ろう。
こんなところだろう。
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
0126デフォルトの名無しさん
NGNG>$(LINK) -out:$@ $(LINK_FLAGS) $(OBJS)
-out:が思いっきり依存しちゃってるので、CPP_COMPILEとか定義する意味がない
>$(OBJDIR)\abc.obj: $(INCDIR)\abc.h
>$(OBJDIR)\def.obj: $(INCDIR)\def.h
これがかなりイマイチと感じる。
0127デフォルトの名無しさん
NGNGその Makefile まともに動かないような気がするんですが,
MS か Borland の make ではちゃんと動くんですか ?
GNU make では意図したとおりに動かないですよねえ ...
気のせいかな.
0128デフォルトの名無しさん
NGNGBINDIR = 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 $@
0129デフォルトの名無しさん
NGNG検証しました。
makefile 的にはあっている模様ですが、当方の cl.exe (VC6SP5)が
-c オプション(コンパイルオンリー) を指定した場合、
-o でディレクトリを指定しても無視されて、全部カレントに吐き出す為
だめぽになっています。
あと
TOUCH = touch
で
$(SRCDIR)/%.cpp: $(INCDIR)/%.h
<タブ> $(TOUCH) $@
は書き忘れでしょうかね。
0130デフォルトの名無しさん
NGNGできるのがいいですね. いままで使用する make にかなり依存するので避けてたんですが.
ちなみに Linux の GNU make, Solaris の make では OK,
IRIX, FreeBSD の make ではだめでした.
0131129
NGNGこれで 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) $@
0132デフォルトの名無しさん
NGNG> IRIX, FreeBSD の make ではだめでした.
gmake は入ってませんか? なけりゃインストールしちゃいましょう。
わたしゃ、もう、gmake 以外は使えない体になってしまいますた。
>>131
> $(SRCDIR)/%.cpp: $(INCDIR)/%.h
> <豚>$(TOUCH) $@
あまり見かけないやりかたですね。cl には gcc の -M オプションみたいのは
ないのかな?
0133デフォルトの名無しさん
NGNGhttp://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
0134デフォルトの名無しさん
NGNGcd Dir
pwd
と書いたとき、pwd が Dir に移動していない時のディレクトリを返してきます。
これは通常動作なのでしょうか?
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGmake は 1 行ごとにコマンド行を解釈して shell を呼び出すような
動作をします.
hoge : fuga
<tab>cd Dir; \
<tab>pwd
でお望みの動作が得られると思います.
0138デフォルトの名無しさん
NGNGcat <<EOF
any message
EOF
ってのをMakefileでやりたいのですが、tabをいれたりとかいろいろやってもうまくいきませんでした。
1行ずつechoするしかないんでしょうか。
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGそれがうまくいかないんです。多分使い方が間違っていると思うんですけど。
target:
[TAB]cat <<EOF \
[TAB] hoge hoge \
[TAB]EOF
target:
[TAB]cat <<EOF
[TAB] hoge hoge \
[TAB]EOF
こんなのは試しました。
0141デフォルトの名無しさん
NGNGmakedepend -- $(FLAGS) -- $(ALL_C_FILES)
0142デフォルトの名無しさん
NGNGもし sh 上で 1 行でヒアドキュメントが使えれば, make でも使えるかも
しれません ... が, 私にはできないように思います.
0143デフォルトの名無しさん
NGNGtarget:
[TAB]cat \
[TAB] hoge hoge
here documentって知ってる?
0145デフォルトの名無しさん
NGNG\ → ;\
は試した?
0146138
NGNG返事が遅れてゴメンなさい。
all:
[TAB]cat <<EOF;\
[TAB]hoge hoge \
[TAB]EOF
として試してみましたが、
/bin/sh: hoge: command not found
と出ました。
# 仕方無いのでechoで頑張りますた。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGあげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
あげちゃったわけでつか。
氏ねよ、クソが。
0149デフォルトの名無しさん
NGNGant
0150デフォルトの名無しさん
NGNGどうすればいいでしょうか? お知恵を貸してください
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 $< $@
0151デフォルトの名無しさん
NGNGOFILES2 = $(DATAFILES2:.dat=.o)
# DATAFILE1のファイルは, objcopy -XXXX $< $@
$(OFILES1): %.o : %.dat
objcopy -XXXX $< $@
# DATAFILE2のファイルは, objcopy -YYYY $< $@
$(OFILES2): %.o : %.dat
objcopy -YYYY $< $@
0153デフォルトの名無しさん
NGNGそれ知らなかった。info make見ても見つけられなかったんだが、どこに書い
てある?
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGほんとだ。tnx
ふしあなさんだったよ。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160みな
NGNG初めまして。宜しく御願い致します。
まず,私は 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 に続く…… ▼)
0161デフォルトの名無しさん
NGNG0162みな
NGNG(▲ …… >>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 の一部抜粋等々,今後追加書き込み致します。
0163デフォルトの名無しさん
NGNG1) 新しいやつをインストールしてみるか
2) gcc/g++ -MM オブションを使うか
3) | sed -e 's/\.c\.o/\.o/' をかますか
してみては。
0164みな
NGNG周りの人に訊いても,自力で色々検索しても,サッパリわかんなかったんで,
こうして何かレス頂けると,ホント嬉しいです。
makedepend が腐ってるっスか…。う〜ん…。
man 見ても,makedepend のバージョン表示する為のオプションって
見当たらないですよねぇ。(困)
えぇと…,取り敢えず「3) | sed -e 's/\.c\.o/\.o/' をかます」って,
具体的にどこにどう記述すればいいんでしょうか?
0166みな
NGNG――やっぱりダメでした…。
自動生成内容に,何も変化は起こりませんでした。
そういえば,自分で試行錯誤してた際も,この行を色々と書き換えてみたけど,
結果に何等変化が無かった記憶が…。
てゆーか,そもそもこの行,そんなに必要な行なんですかねぇ…??
一応,サンプルなぞを真似つつ,取り敢えず付けてあるだけな感じなんですけど。
仮に全く無くしたりすると,具体的にどんな不都合が…?
0167163
NGNGとすると、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 にインクルードさせる。
0168みな
NGNGいや,>>163 で書いてあった「3)」の,(パイプで)「かます」っていうのが,
Makefile 中のどこにどんな風に記述したらいいのか謎だったんです。
取り敢えず,>>167 前半のやり方で,一応目的の内容の Makefile は得られますね。
もしかしたら,もっとスマートなやり方が有るのかも知れませんけど。
(コマンドライン複数行分を何等かのスクリプトファイルにしちゃうとか…?)
>>167 後半のやり方は,今から早速勉強させて頂きます。
某 Visual 何たらの統合環境の“全自動”に甘やかされて育つと,
いざという時に弱々だなーと,思い知らされてるトコでして…。
今回は,色々と教えて下さって,有り難う御座います。
もしかしたら,今後また別件でマヌケな質問してしまうかも知れませんけど。(汗)
0169デフォルトの名無しさん
NGNG勝手に読み込んだりしないかな?FreeBSDのmakeはそうだったけど。
.dependをつくるmkdepなんてコマンドもある。
-aオプションをつけると追加書き込みもしてくれるみたい。
0170デフォルトの名無しさん
NGNG大昔からC++には対応しているはずだけどなあ。
どうせそんなmakedependなら、sedで逃げても、まともに
C++の構文読んでくれなかったり、__cplusplusが定義されて
いなかったりするんじゃないのか?
まともなmakedepend入れた方がいいよ。
gccmakedepなら-MMとか使えるし。
0171名無しさん@カラアゲうまうま
NGNGたぶん*BSD固有。
0172みな
NGNGgccmakedep なんて在ったんですね。知りませんでした…。
で,>>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 してないなんて事はありません。
う〜ん,まさに一難去ってまた一難。
0173デフォルトの名無しさん
NGNG-DXXXは基本的にコンパイル時と同じように設定しないとダメ。
あと、インクルードパスが通っていないのかも。多分C++の
標準インクルードパス(/usr/include/g++とか)は自分で追加
する必要があると思う。
それでダメなら、根本的に環境がおかしいのかなあ。gccmakedep
が入っているからにはXが入っているんだろうけど、X11R5だったり、
gccがegcsよりさらに昔のだったりしないか?あるいは、gcc向け
でなく、別のコンパイラ向けにソースを書いているのに、gccmakedep
を使おうとしているとか。
0174みな
NGNG前半で御指摘の「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/ というパスに在ります。
0175デフォルトの名無しさん
NGNG使ってみたらどうかな。こいつは依存関係を標準出力に出すので、
リダイレクトしてファイルに落とす。そして、>>167 みたいに
-include でインクルードしてやればよい。Linux ということは gmake を
使ってるわけだよね?
0176デフォルトの名無しさん
NGNG> やはり後半で御指摘の「根本的に環境がおかしい」んですかねぇ…。(困)
> OS は RedHatLinux 7.1,コンパイラは GNUC 2.96(= GNUC++ 2.96),
> makedepend も gccmakedep も /usr/X11R6/bin/ というパスに在ります。
rpm -qf /usr/X11R6/bin/{makedepend,gccmakedep}
の結果は?
0177みな
NGNG私も,>>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 に成長しないと,宝の持ち腐れですね…。(自嘲
0178176
NGNG> 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}
とか。
0179デフォルトの名無しさん
NGNG↑こんなんもあるぜ。
漏れはソースを俺様カスタマイズしてつかってるぜ。
0180みな
NGNG[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 で「周りの人に訊いても――(中略)――サッパリわかんなかったんで」
と書いたのは,そんな訳だったんです。(類は友を呼ぶ…?)
0181みな
NGNGあっ,その "autodep" って,色々 Google 検索してた中で見た記憶が…。
リンク先あちこち紫色になってるし。
コレって,一企業(株式会社ハッピーサイズ)が御厚意で無償提供して下さってる,
一フリーソフトですよね?
ですから,あまり標準的・一般的じゃないユニークなモノに
最初っから頼りきっちゃうと,後々何かマズいかなーとか,
(折角習熟してもツブシが利かないとか…?)
何と無く思ってしまって,初めて見た時はそのまま流してしまってました。
やっぱ,いいですか。"autodep"。
後でダウンロードして,ちょっと試してみますね。
情報,有り難う御座います。
0182176
NGNG> [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関連の入門書を嫁。
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGどう記述したらよいのでしょうか?
$(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
…
0187デフォルトの名無しさん
NGNG中身はまだ読んでないけど、スレタイ気に入った。w
0188186
NGNG0189デフォルトの名無しさん
NGNG\ヽ--___
\ 丶---ヽ___
.゙\ ク ~~> クソスレに認定されました
\ ソ /
.\ ノ
\ /
.\/
.\
\
.\
,,\
.″ ゙》
__., イ,, 》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
0190デフォルトの名無しさん
NGNGマルチかよ!
0191デフォルトの名無しさん
NGNG0192IP記録実験
NGNGhttp://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を提出することがある。
0193デフォルトの名無しさん
NGNG訴えられても「誣告ですよ」と返せる様にソース固めて叩きゃ良いじゃん。
荒らさなきゃ良いじゃん。
0195デフォルトの名無しさん
NGNGありがと
0196デフォルトの名無しさん
NGNGってゆってたのにー
プンスカ!!
0197デフォルトの名無しさん
NGNG逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
0198デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0199デフォルトの名無しさん
NGNGらしいね
ID:WcTtLBwB
も少しまとめてレスする癖付けれ
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG(現時点で全世界規模のインテリ層に私がシンパいるとか 笑 ありえないって。)
俺一人で突き進む事が基本なんですが(てか十分。命だけ足りないけど。)
そういった事は、貴方方には大きいけど俺には小さいです。
「人生」ってありますね。
私が直接的な報復手段を選ばずに我慢したのもそういった理性があるからです。
「目先で」シャレにならない、からです。
大体察しているでしょう。
では5分後か昼に掛けます。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG何が変わるんですか。
0208デフォルトの名無しさん
NGNG質の低い書きこみが減って、結果的に質の平均があがるのではないかと、、、
0209デフォルトの名無しさん
NGNG「おはよう一直線」という番組で、生島ヒロシのでるやつ。
http://www.tbs.co.jp/radio/format/ikushima.html
宮崎哲「2chでは嘘のことをネタというんですけどね、これはネタですね」
「あまり真に受けて騒ぐのもどうか」とも、
おまえらのスポンサーは真に受けてひろゆきに6億円も損害賠償請求して
るじゃん。とか思ったわけだけど
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNGもし実現しても回線細そうですしね。。。
0212デフォルトの名無しさん
NGNG俺は嫌いだけどねこの分け方
0213デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0214デフォルトの名無しさん
NGNGIPを総連に売られたら、どうなると思う?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGバカになりきるのは(人間として)難しい
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNGまあな、今年は俺の年なわけだがどうよ?
っていうかなぁ、俺の毛毟り取るのはまあ、許してやるよ。
メシくわせてもらってるからな。
でもな、紙とか食わせるのはマジで勘弁してくれよ。
俺ァな、山羊じゃねぇんだよ。
あんなひつじの出来そこないと一緒にしないでくれよ。
だって山羊だぜ、山羊。
俺なんか十二星座ってだけじゃなくて干支でもあるんだよな。
だけど、山羊見ろよ、山羊。
黄金聖闘士(ゴールドセイント)止まりだぜ?
あんなのと一緒にしてもらいたかぁーねーよな。
っていうか、俺を殺せるもんならやってみろよ。
俺はいつどこでも誰の挑戦でも受けるぞ?
0221デフォルトの名無しさん
NGNGここまではIPから特定しますた。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGそれを説明しないお前は説得力ゼロだが。
加えて君の無能さも証明しているな。
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG「見なかった」といわれて終わるのは証明の問題であって実体の問題ではない。
0226デフォルトの名無しさん
NGNG0227山崎渉
NGNG0228デフォルトの名無しさん
NGNG0229山崎渉
NGNG0230山崎渉
NGNG0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGどの話?
0235デフォルトの名無しさん
NGNGDIR_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が起動されるまでわかりません。
なんか解決法はないですか?
0236デフォルトの名無しさん
NGNGARC_RULE:=$(DIR_LIST:%=.%.arc_rule)
.%.arc_rule:
@echo '$*/lib.a: $$(wildcard $*/*.o)' > $@
@echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@
clean::
rm -f $(ARC_RULE)
include $(ARC_RULE)
0237デフォルトの名無しさん
NGNGまちがいがあったので修正版。
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
0238235
NGNGあーいっこづつ別のファイルに出せばいいんですね。
そういうやつを一個のファイルに出してみて、「いける?」とか思って、
「あーでもこのファイル更新するタイミングがわからん」とか思ってあきらめてました。
いけそうですね。まだ試せないけど。ありがとーデス。
0239236
NGNG期待通りの動作になるかもしれませんが、wildcardで
全部アーカイブにするのは作り方としてよくないとおもいます。
(ソースコードを生成するためのプログラムのオブジェクトまで
拾ってしまう可能性がある。)
lib.aにするところまでサブディレクトリのMakefileで記述したほうが
いいとおもいます。
0240デフォルトの名無しさん
NGNG> (ソースコードを生成するためのプログラムのオブジェクトまで
> 拾ってしまう可能性がある。)
それはまた別のディレクトリにすべきなんじゃないの?
> lib.aにするところまでサブディレクトリのMakefileで記述したほうが
> いいとおもいます。
ともあれこれには同意。
0241235
NGNGそうした場合には、ディレクトリの数だけ無条件でmakeを起動してしまうわけですよね。
実は、なんとかそれを避けれないかということで、いろいろやって>>235のようになったのですよ。
0242236
NGNG>実は、なんとかそれを避けれないかということで、いろいろやって>>235のようになったのですよ。
ライブラリの元になるオブジェクトはいつ作るのでしょうか?
wildcardでマッチさせようとしているので、makeを起動する前にすでに
オブジェクトができているはずです。だとしたけ結局makeを
複数回起動しているのでは?
0243235
NGNGあ、すんません、実際にwildcardをかけるのは.cとかなんですよ。
foo/lib.c : $(patsubst %.c,%.o,$(wildcard foo/*.o))
ってな感じです。wildcardが適用されない問題に絞るために端折ってました。
0244236
NGNG237の一部差し替え。
.%.arc_rule:
@echo '$*_SRC:=$$(wildcard $*/*.c)' > $@
@echo '$*_OBJ:=$$($*_SRC:%.c=%.o)' >> $@
@echo '$*/lib.a: $$(*_OBJ)' >> $@
@echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@
0245236
NGNG.%.arc_rule:
@echo '$*_SRC:=$$(wildcard $*/*.c)' > $@
@echo '$*_OBJ:=$$($*_SRC:%.c=%.o)' >> $@
@echo '$*/lib.a: $$($*_OBJ)' >> $@
@echo ' $$(AR) $$(ARFLAGS) $$@ $$?' >> $@
@echo 'clean::' >> $@
@echo ' rm -f $$($*_OBJ)' >> $@
0247デフォルトの名無しさん
NGNG> ARC_RULE:=$(DIR_LIST:%=.%.arc_rule)
っていったい何をやっているの?
0248235
NGNGさて、後はソースファイルが削除されたときの・・・。
>>247
ARC_RULE:=$(patsubst %,.%.arc_rule,$(DIR_LIST))
↑の、ちょっと短く書ける書式。
0250デフォルトの名無しさん
NGNGこんなんでどうよ。
.%.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
0251235
NGNG> 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
0252235
NGNG0253デフォルトの名無しさん
NGNG↓jam
http://www.perforce.com/jam/jam.html
0254デフォルトの名無しさん
NGNG> > ifneq($*_SRC,$(wildcard $*/*.c))
> ぱっと見、これが常に偽になりそうです・・・。
なんで? $*_SRCと右の$(wildcard $*/*.c)はワイルドカードが展開されるタイ
ミングが違うはずだが。
> > $@ : .force
> これは、$*/lib.a : .force ですかね。
ちがう。ソースが追加/削除されたら.arc_ruleを書き換えたいんだろ?
0255235
NGNGごめんなさい。完全に勘違いしてました。
試させてもらいました。
ソースを削除したとき、.arc_ruleは更新されますが、
lib.aの中に削除されたソースから生成した.oが含まれたままになってしまい、
リンク時に有効な.oファイルとして認識されてしまいます。
削除されたソースファイル名を認識して、対応する.oファイルを削除し、
lib.aからも削除するようにしないいといけないのですが、
既に存在しないファイルに対してmakeがアクションをおこすような指示をどう書けばいいのかが
思いつきません。
0256デフォルトの名無しさん
NGNGそうなるとたしかに$*/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'; \
} > $@
0257235
NGNGそいつだと、%.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
0258デフォルトの名無しさん
NGNGINCS=`find *.h`
0259デフォルトの名無しさん
NGNG> >>256
> そいつだと、%.arc_ruleが作り直された段階で
> $*/lib.a: .force の関係がキャンセルされてしまうみたいです。
> なので、%.arc_ruleの出力時に$*/lib.aを削除するようにしました。
$*/lib.aを%.arc_ruleに依存するようにするのはどうよ。
0260デフォルトの名無しさん
NGNG対応するソースの無くなったオブジェクトがlib.aに残る問題を考えると、
あのタイミングで削除してしまったほうが効率もよく、すっきりします。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGOSTYPEでうまくいきそうですがLinuxは両方linux-gnuになってしまいます。
setやenvにはディストリビューションの情報はなさそうです。
両者の区別は可能ですか?
0264デフォルトの名無しさん
NGNGサポートしているモノのうちのひとつを引数で受け取る仕様に汁。
0265デフォルトの名無しさん
NGNGSYSTEM := $(...) # ディストリビューションを見分けるプログラムを呼ぶ。
include Makefile
0266デフォルトの名無しさん
NGNG> SYSTEM := $(...) # ディストリビューションを見分けるプログラムを呼ぶ。
しまった。$(shell ...)ね。
0267山崎渉
NGNG0268山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0269デフォルトの名無しさん
NGNGmake の本(GNU make の本ではありません)に
.SUFFIXES:
と書くとサフィックスに関するデフォルトの設定をクリアできると書いてありましたが、
GNU make でやってみると何かデフォルトの設定も使われているようなんですね。
-r オプションは使わないとすると、
GNU make では Makefile にどう書けばいいんでしょうか?
実際に問題が発生した例)
debug.cpp と debug ターゲットがある場合、
make debug とやると .cpp: サフィックスルールも適用されてしまう。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG.PHONY ではなくて?
0274山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG同じコマンドラインでも、Windows98上ではエラーにならず、Windows2000では
エラーになります。
エラーメッセージは
make: *** [target] Error 255
というもので原因や対策がはっきりわかりません。
検索すると、よく知られた問題のようですが、根本的な解決方法は見つかりませんでした。
というわけで、
おしえて、えろいひと。
0277デフォルトの名無しさん
NGNG解決法: コマンドラインの引数を少なくする
……しかないんじゃないの?
0279山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0280山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0281デフォルトの名無しさん
NGNGgmakeの質問させてください。
Linux上で
$(DEPDIR)/%.d: $(SRCDIR)/%.cpp
<tab>@[-e $(DEPDIR)] || mkdir $(DEPDIR)
<tab>@$(CXX) -なんとか…
って感じで動かしてたんですが、
Solaris8に移植してgmakeかけようとしたら
/bin/sh: test: 引数が足りません。
とか言われてしまいます。
[-e $(DEPDIR)]
でなんでつまづくかわかりません。
ご存知の方がいたら、教えてもらえないでしょうか
0282デフォルトの名無しさん
NGNG自己レスです
[がシェルコマンドとは気づかなかった
Solarisのbin/shだと [-eが使えなかった模様
すいませんでした。
0283デフォルトの名無しさん
NGNGttp://www.freebsd.org/cgi/man.cgi?query=test&sektion=1&apropos=0&manpath=SunOS+5.9
ところで[]の内側にほんとにスペース入れてないのか?
0284デフォルトの名無しさん
NGNGいれてません。
bin/shで-eオプションがないようです。
bin/ksh じゃないと駄目みたいなんですが、
GUN makeってbin/shじゃないと駄目ってのはありませんでしたっけ?
0285デフォルトの名無しさん
NGNG誤解を招くので追記(汗
全角スペースの意味でとりました。
半角は入ってます
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNG「-d filename
ファイル filename が存在し、ディレクトリであれ ば真。」
あぅ、こーいうものがあったんですね。
試してみます、ありがとうございました。
0288デフォルトの名無しさん
NGNG(TAB)rm *.o
(TAB)rm *.a
って書いたら *.o がない時点でエラーになっちゃって *.a が消されません
みなさんはこういう時ってどうしますか?
rm *.o *.a とかでしょうか?
0289デフォルトの名無しさん
NGNGrm -f *.o *.a
0290山崎 渉
NGNG0292山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0293デフォルトの名無しさん
NGNG進捗を表示しつつmakeする方法ってありませんか?
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG@を外す
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG大きいプロジェクトならmakefile分割しなよ。
そうすれば望みもかなうし管理も楽になるから。
0299デフォルトの名無しさん
NGNG後は、現在時刻と表示された時刻を見比べて、「どの程度」なのかを推測しろ。
できるよな? な?
0300300
NGNG0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG.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つ変化する部分があると
どう書いたらいいものか...
0303デフォルトの名無しさん
NGNGdefine 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))))
と書けるみたい。(全角スペースはタブね)
0304デフォルトの名無しさん
NGNGこの中間にある書きやすくて読みやすくて高機能なビルド支援ツールってないのかね。
0306303
NGNGeval使わない場合は、 -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)
と書けるみたい。(全角スペースはタブね)
0307302
NGNGおお、makefile を更新したら、ちゃんとルールファイルを更新してから
include するんですね。これは使えそうです。どうも、ありがと。
# $(MAKEFILE) は自分で値を設定しておかないといけないみたいですね。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGパスカルに逢わせてくれてありがとう〜♪
0311デフォルトの名無しさん
NGNGMakefile
--------------------
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 に
設定することは可能でしょうか?
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGmakeなんて初心者虐め、他文化虐め、異端者排除の大好きなUN*X厨の道具だもの。
その証拠にこのスレでは幾多の質問が無かった事のように流されてきたじゃない?
0315デフォルトの名無しさん
NGNGmakefileを書く必要はないんです。
ただ単に、hello.cをコンパイルしたければ
「make hello」とか「make hellow.exe」と打つだけです。
何が難しいんですか?
...makefileを書かねばならんのは、
分割コンパイルをや非標準のライブラリの導入をする
中級者以上だけです。
0316いなむらきよし
NGNG0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG#!/usr/bin/make
なんてスクリプトが書かれるのかな。嫌だな。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGいろんな make で扱えるように Makefile を書くかで, 面倒くささが
変わってきて, ちょっといや.
0323デフォルトの名無しさん
NGNGいろんな make で扱えるように Makefile を書くかで, 面倒くささが
変わってきて, ちょっといや.
0324デフォルトの名無しさん
NGNG他には?
0325デフォルトの名無しさん
NGNG7行プログラムじゃないけど、必要最小限、極力簡潔に書くの。
0326デフォルトの名無しさん
NGNGWindowsでもcygwin/binにパス通して使ってる。
nmakeは名前違うからいいけどBorlandのはまんまmakeで激しく迷惑だな。
0327デフォルトの名無しさん
NGNG同位。
あんな変態的なのが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 "$@"
0328デフォルトの名無しさん
NGNGmakeを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));
}
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG仕事じゃないよ。でも後で使うつもり。
低機能だけどMFCやVCLよりシンプルで使うのがラクだからね。
0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG5年ほど前、100m離れた自席とマシン室の間往復するのが面倒で、
自席のPCにCygwin入れてマシン室のサーバ機からtelnetでログイン、
nmake叩いてコンパイル、できたファイルをFTP GETとかやってた。
あの頃はTerminal Serviceがまだ標準じゃ無かったんで、nmake
マンセーだったよ。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNGOSTYPE=$(shell echo $$OSTYPE)
とやってもOSTYPEが空のままなんだけどどうすればいいの?
bashでecho $OSTYPEだとcygwinって表示されるし
linuxでは普通にOSTYPE=linux-gnuがセットされるのに。
0335時代錯誤
NGNG0336デフォルトの名無しさん
NGNGお前みたいなのがJavaの品格を貶めているんだよ?わかってる?
0337デフォルトの名無しさん
NGNG> makeをgmake.exeにリネームするとmakeを起動するmakefileが通らんので、
Makefileの書き方が悪い。$(MAKE)を使うべき。
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNG普通にターゲットだから $@ の模様。
0340デフォルトの名無しさん
NGNG>>311
> FILE_3 = *.tmp
これも GNU Make だと
FILE_3 := $(wildcard *.tmp)
かな? キモは ":=" を使って、その場で展開しておくこと。
0341デフォルトの名無しさん
NGNG> キモは ":=" を使って、その場で展開しておくこと。
ををっ、腹ショー!!
0342デフォルトの名無しさん
NGNGというのをやりたいんですが、どうやって判別すればいいですか?
0343デフォルトの名無しさん
NGNGX 上で走っているターミナルの場合はどうすんねん、ってのは揚げ足とりだよなぁ。
とりあえず環境変数 DISPLAY が設定されているか否かで判別すれば?
0344デフォルトの名無しさん
NGNGdebug:; $(DEBUGGER) $(TARGET)
0345デフォルトの名無しさん
NGNGシェルスクリプトのライブラリという形で提供すれば良かったんじゃないの?
当時の貧弱な計算機環境だと、巨大なシェルスクリプトが重荷になったのかも
しれないけどさ。新しく文法覚えてツールを使うっていうのは、当時の利用技能の
高いユーザにとっても面倒なことだったと思うけどなあ。
0346デフォルトの名無しさん
NGNGチンパンジーのアイちゃんですか?
0347デフォルトの名無しさん
NGNGmake: don't know how to make love
0348デフォルトの名無しさん
NGNGところで, Makefile で使う変数名で慣用的なものってどんなのがありますか.
CC, CXX, CFLAGS, LDFLAGS, LIBS あたりはみんな普通に使うんじゃないかと
思うのですが.
0349デフォルトの名無しさん
NGNGデフォルトにしてるんで、ターゲットの日付を見てくれましぇん。
なんでこんな変な仕様にしたんだろ。
おきて破りで環境変数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)
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGさすがに configure 直書きとかじゃないよな?
Autoconf 使ってるのなら↓からぱくってくるなり参考にすればいいんじゃないかな。
ttp://www.gnu.org/software/ac-archive/htmldoc/index.html
0352デフォルトの名無しさん
NGNG設定したい環境変数は複数あって、それらをすべてのルールのコマンドに反映させたいです。
0353デフォルトの名無しさん
NGNGmake -np | grep "="
0354デフォルトの名無しさん
NGNGコンパイルにかかった時間を簡単に計るのは、どうやったらいいですか?
今は、
all: date target.exe
date:
date
target.exe: target.cpp
コンパイル
date
みたいにしてます。
0355デフォルトの名無しさん
NGNGストップウォッチ
0356デフォルトの名無しさん
NGNGtime
0358デフォルトの名無しさん
NGNGスペース区切りのリストの中にスペースを含む文字列(ファイル名)を
一つの要素として入れるにはどうしたらいいんでしょうか?
0359デフォルトの名無しさん
NGNGみたいに\でエスケープする。
0360358
NGNGありがとうございます。
ターゲット、依存ファイルには置けるようになりました。
ですが、文字列関数にわたすと複数の要素に分割されてしまいました。
このエスケープはどんな仕様で動作しているのでしょうか?
マニュアルに書いてあります?
0361デフォルトの名無しさん
NGNGかなり昔に作られたmakeファイルや、誰が作ったのかわからないmakeファイルを
新環境用に「感」で直しつつ作業してました。
ある程度manで調べたりしたけど、本当・・・難しい。
まともな日本語の本ってないんですかね?1にも書いてありますが。
0362デフォルトの名無しさん
NGNG言語もわからんのに答えられるわけねーだろボケ!
0364デフォルトの名無しさん
NGNGとやると.cのファイルが全く無い場合
>そのようなディレクトリやファイルはありません。
というエラーメッセージが表示されてしまいます。
メッセージを出力しないようにするにはどうすればいいですか?
0365デフォルトの名無しさん
NGNGSRCS=$(shell ls *.c 2>/dev/null) は使いたくないか?
0366デフォルトの名無しさん
NGNG0367
NGNG質問ですが、
LINUXでg++でコンパイルするmakefileを
作ったんですが、
エンディアンをビッグ<−>リトルを
切り替えられるような方法を教えてほしいのですが
CFLAGに設定するようなものなのでしょうか?
0368デフォルトの名無しさん
NGNGもし,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の使い方は複雑なのでググッて調べて下さい.
0370368
NGNG>>368
DEFS = -DWORDS_BIGENDIAN
hoge.o: hoge.cpp
- g++ $(DEFS) hoge.cpp
+ <TAB>g++ $(DEFS) hoge.cpp
0371デフォルトの名無しさん
NGNGそもそもエンディアンに依存したコードを書こうとするのが良くない。
ビットシフトとか何とか使って最初からエンディアンに依存しない実装に汁。
0372デフォルトの名無しさん
NGNG現実を知れ
タコ助が
0373デフォルトの名無しさん
NGNG>371 は至極当然のことを言ってると思うんだけど、問題になるのは性能なの?
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG環境変数LIBを上書きして定義してて2日も悩んでた。orz
あほだ
0376デフォルトの名無しさん
NGNGオブジェクトファイルの出力先を変えたいんですが、
%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $(OUTDIR)$@
とか書いてしまうと毎回オブジェクトファイルが生成しなおされてしまいます。
なんかうまい手ないでしょうか?
0377デフォルトの名無しさん
NGNGオブジェクトファイルの出力先にMakefileを書いて試してみたけど,
依存ファイルのところの記述(:のあと)で親ディレクトリに遡れないみたいで,
これでもうまくいかないですねぇ.
0378デフォルトの名無しさん
NGNG$(OUTDIR)/%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $(OUTDIR)$@
0379デフォルトの名無しさん
NGNG他になんか便利なビルドツールあったらおしえちくり
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG$(OUTDIR)/%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
0383デフォルトの名無しさん
NGNGMSBuild
0385デフォルトの名無しさん
NGNGVPATH = $(SRCDIR)
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNGftp://ftp.ascii.co.jp/pub/GNU/make/
だと古い?一つ前なんだけど。
0388デフォルトの名無しさん
NGNGんなわけねー
$(OUTDIR)%.o : %.cpp
ってオチか?
0390デフォルトの名無しさん
NGNGLinuxで使用できるんですか??
おせーてくだされ。
0391デフォルトの名無しさん
NGNGVC++の自動生成で作ったmakは、nmake方言をバリバリ使用
しているので無理。
つーかそもそもVC++系のcl.exe/link.exeがLinuxには無いし、
各コマンドのオプションもgccとは全然違うんだから、流用しよう
なんて考えが無謀だろ。
nmake方言を極力使わないようにして書いた手作りmakなら、
CC/LD辺りのマクロを変えるだけで動く可能性はあるが。
0392デフォルトの名無しさん
NGNG上級者様、ありがとうございまっす!
自分の望んだ以上のお答えでありました!
VC++で出来るだけデバッグして、Linuxに持って行って
makeファイルでコンパイルをたくらんでいるのですが、
VC++で作ったmakeファイルではダメですか…
手書きで書かないとダメなんすかねぇ…
0393デフォルトの名無しさん
NGNGnmake を「ナマケ」て呼んでた '`,、('∀`)'`,、
0394デフォルトの名無しさん
NGNGMakefileの中に引数で条件分岐できるif文書きたいんだけど
どうしたらいいでしか?
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGを下位階層のMakefileに継承させたいのですが、どうすればよいでしょうか。
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGshみたいになんとかしてほしいよ。automakeはよく分らんし。
0402デフォルトの名無しさん
NGNG自分のreadmeには必須と書いてあるよw
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGUNIXプログラマ必須のツールだと思うけどね。だからNetBSDみたいに、
GNUツールの全てのMakefileを自前のmake用に新規に書くのは嫌い。
もちろんビルド時間の節約にかなり貢献してるのは認めるけど。。。。
>>403
gmakeは他のGNU系列のパッケージには依存してないよな。gmake必須と
するのは、別にGNU原理主義とも関係ないと思う。
0405デフォルトの名無しさん
NGNGような。(まぁそいつの使い方がなってなかっただけかもしれんが)
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG使ったことないんで使い勝手がわからんばい
0408デフォルトの名無しさん
NGNG-MMD だけで良いと思ってましたが、だめなようです。
どなたか解説していただけませんか。
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNGどっちが君の言いたいことか曖昧な気がするので両方答えてみる。
q1) boostがmakeの代わりにbjam使ってるのってどうよ?
a1) いいんじゃない? ある意味makeよりポータブルだし。
q2) 漏れもbjam使いたいけど、いいの?
a2) チーム開発ならリーダー以下チーム全員に合意を取り付けないと。
個人なら好きなのを使って問題なし。
0411409
NGNG言われてみれば、とってもあいまいでした。
q2) の方を訊いてみたかった個人開発の者です。
今は前に書いた makefile を使いまわして、それなりに満足していますが、
あの boost があえて使う bjam は、どんな感じなんだろうかと思ったんです。
けど、ポータブルなところで選ばれてる気がしてきました。
実際に使ってる人の意見も聞いてみたいです。
0412デフォルトの名無しさん
NGNGGNU make で上のようなことはできませんか?
0413デフォルトの名無しさん
NGNGだから一部だけ修正しても全モジュールリビルドしてリリースしてる。
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGいったい何を書いてるの?
そういう漏れは、Pimpl Idiom 教団に入信しちゃった。
0417デフォルトの名無しさん
NGNGiostreamの代わりにiosfwdをインクルードとかそういう事を考える必要も無くなったな。
0418デフォルトの名無しさん
NGNGgccに付いてないのを知ってびびった。
3.xには付いてるんだっけ?
0419デフォルトの名無しさん
NGNG3.4 からです。
何年も待って、やっとキター。と思ったら、3.4 はびみょーな出来栄えだったのな。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGは
事前にコンパイルが済んでいる
だろ。どこがおかしいのやら。
0426デフォルトの名無しさん
NGNGそれなら「事前コンパイル済みヘッダ」になるだろ。
なぜ「プリコンパイルドヘッダ」ではないのだろうか?
どうやらMSの翻訳が元のようだが。
0427デフォルトの名無しさん
NGNG普通カタカナに直す時に「ド」なんて書かない。あなた日本人?
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNGいったいなにがしたいんだ。
0432デフォルトの名無しさん
NGNG> 普通カタカナに直す時に「ド」なんて書かない。
よくあるがこれは変な習慣だよなあ。そもそも、なんで抜くのかが疑問だ。コレMSが始めたのか?
0433デフォルトの名無しさん
NGNGメモリマップドI/Oとか言うじゃん
0434M.B.
NGNG0435デフォルトの名無しさん
NGNGそれは「ド」ではなく「ト」では?
0436デフォルトの名無しさん
NGNG(;´Д`)
漏れも、なんか make をうまく使いこなせなくて
癇癪起こしちゃって自分で書こうとした事があるよ……
0437M.B.
NGNG昔アスキーで出してたような、.exe 形式の make が見当たんなくてさ、
GNU make のソースを Cygwin 上でコンパイルして
.exe 形式にすりゃあいいと思ったんだが結局ソースが見つからず、
ええい面倒臭え、と思って Java で書いた。
非常にチャチなものだが便利に使ってる。
0438デフォルトの名無しさん
NGNGGNU make のソースが見つからないって、アフォか。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG0443M.B.
NGNG0444デフォルトの名無しさん
NGNGftimecomp source target && ( sourceからtargetを作る処理 )
とかはたまにやるけど。ftimecompは自作ツール。
0445M.B.
NGNGいらんものいろいろ作ったなぁ。
0446デフォルトの名無しさん
NGNGMakefileに書いておくんだけどな、おれ
0447M.B.
NGNGどこにしまったか忘れる。
0448デフォルトの名無しさん
NGNG0449M.B.
NGNG0450デフォルトの名無しさん
NGNGよく単一ターゲットに使われるみたいだけど
どういう意味なの?
0451デフォルトの名無しさん
NGNGマニュアル読め
http://www.ecoop.net/coop/translated/GNUMake3.77/make_4.jp.html#SEC41
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNGカードキャぷたーさくらってマジ面白いよな。
0454デフォルトの名無しさん
NGNG> よんだけどわかんなかったんだよぅOTL
同志よ、俺もわからん。
でも、普通に依存関係書いている分には必要ないような気がする。
0455デフォルトの名無しさん
NGNG少し調べてみた。
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」が更新される。
両方更新されると、両方表示される。
コロンをひとつにすると、同じターゲットに対するコマンドが二つあると警告が出て、両方更新された場合にも一方のコマンドしか実行されなくなる。
マニュアルにある通り、どのソースが変更されたかによって実行するコマンドを切り替えるための方法だと思う。
0456make に代わる次世代標準
NGNGmake に代わる次世代標準はありませんか?
ちなみに Ant は処理系が Java で書かれているし XML 記法だからやだ。
0457デフォルトの名無しさん
NGNGperl か python と結びついてほしい。
たいていの UNIX には perl や python は入っているだろうし。
0458デフォルトの名無しさん
NGNGインスコすれば、そんなことは誰もわからない。
0459デフォルトの名無しさん
NGNGMSBuild使え
0460デフォルトの名無しさん
NGNG個人的にはAWKと(ry
0461デフォルトの名無しさん
NGNG次世代標準なんかじゃないけど、jamとかどうですか?
ttp://www.freetype.org/jam/index.html
0462デフォルトの名無しさん
NGNGSHELL変数をうまく使え
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGa.hpp : b.hpp
の依存関係の解決方法を教えていただけないでしょうか?
0465デフォルトの名無しさん
NGNG依存関係を解決するとはなんぞや?
0466464
NGNG間違っていたのでしたら申し訳ありません。
a.hppにおいて、
#include "b.hpp"
となっているとして、
b.hppを編集した場合、a.hppをインクルードしている各々のobj(cpp)ファイルが
その都度コンパイルされて欲しい、ということです。
0467デフォルトの名無しさん
NGNGgcc -MM
makedepend
このへん調べれ。>408のリンク先もけっこういいな。
0468デフォルトの名無しさん
NGNG(どっかにコピーするとか)の記述なんかもサポートしたMakefileの
フレームワークというかお手本みたいなのってどっかにないの?
0から手書きするのめんどくさ過ぎ。かといってAutoなんたらとか使いたくないし。
0469デフォルトの名無しさん
NGNG>ヘッダの依存関係のチェックやビルド後のリリース用スクリプト
>(どっかにコピーするとか)の記述なんかもサポートしたMakefileの
>フレームワーク
Autoなんたらはそのためにあるのだが....
0470デフォルトの名無しさん
NGNG早速調べてみます。有難うございます。
0471466(464)=470
NGNG0472デフォルトの名無しさん
NGNG自分も最近makeを使い始めたんですが、ヘッダファイルをターゲットとして指定するのがそもそも間違いでは??
ターゲットはあくまで、その下の行のコマンドによって作成されるターゲットであるはずです。
つまり>>466の場合では、a.hppは、b.hppから”作成"されるわけではないので(ただインクルードされているだけ)、
a.hpp : b.hpp とa.hppをターゲットとして書くのはおかしい気がします。
(ターゲットにヘッダファイルが指定された時にmakeがどのような動作をするのかわかりませんでしたが)
こういう場合は、
オブジェクトファイル: ヘッダファイル1 ヘッダファイル2
もしくは、
ソースファイル: ヘッダファイル1 ヘッダファイル2
とスペースで区切って並べて書いた方がいいかもしれません。こうする事で少なくとも、
ターゲットのオブジェクトファイルやソースファイルと、複数のヘッダファイルとの依存関係は維持出来るはずです。
しかしこれでは、ファイルが増えて来た時に大変そうなので、他にもっと良い方法があるのかも知れませんが…。
0473デフォルトの名無しさん
NGNG>
> ソースファイル: ヘッダファイル1 ヘッダファイル2
ああ、すいませんこれは間違ってますね。
オブジェクトファイルをターゲットとするべきだと思います。
0474デフォルトの名無しさん
NGNGhoge.h : hoge.list
hmaker.exe --prefix=hoge hoge.list
みたいなふうにしたんですが、この=が原因でこの文がマクロ変数に
代入してる式みたいなふうに認識されてしまい升。nmake.exeです。
どうすればいいんでしょうか。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
05/03/02 02:16:06.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とひっかかってしまい、うまくコピーができません。
どなたかご教示いただけないでしょうか?
0478デフォルトの名無しさん
05/03/02 02:20:46> srcpackage: files.txt
> srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt))
> srcpackage: $(DSTFILES);
これの意味を自分で(日本語で)説明できるか?
できないなら、マニュアル見直せ。
ほかにも問題がありそうだが、まずはそこから。
0479477
05/03/02 16:26:251行目: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:
コピー処理
としてみました。
0480デフォルトの名無しさん
05/03/02 20:34:06srcpackage: file.txt
を「srcpackageを作るためにはfile.txtが必要」と読め。
0481デフォルトの名無しさん
05/03/03 00:44:11やっぱりマニュアル読んで出直せ。
> srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt))
この構文は、 srcpackage をターゲットとするコマンド内でのみ有効な変数の代入。
グローバルな変数への代入なら "srcpackage: " を削除しろ。
> srcpackage: $(DSTFILES);
これは
srcpackage:
$(DSTFILES)
と同じ意味。
srcpackage を $(DSTFILES) に依存させるのであれば最後のセミコロンを削除しろ。
0482デフォルトの名無しさん
05/03/03 00:55:16# ここらへんで 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)
# 動作未確認
0483477
05/03/04 16:25:30すみません。以後気をつけます。
>>481
> > srcpackage: DSTFILES=$(subst ../,package/src,$(shell cat files.txt))
>この構文は、 srcpackage をターゲットとするコマンド内でのみ有効な変数の代入。
srcpackageが必要とするファイルを生成する別のルールにも
適当されるものだと勘違いしておりました。
ありがとうございます。
>>482
ありがとうございます。
こちらで試してみます。
0484デフォルトの名無しさん
05/03/05 12:14:47> 適当されるものだと勘違いしておりました。
適用されるよ。ルールじゃなくてコマンドに、だけど。
0485デフォルトの名無しさん
05/03/11 01:03:30ルールでのファイル指定や、文字列操作関数なんかでは、
要素の区切りがスペースになってるんですけど、
スペースを含む文字列を一つの要素として扱いたい場合はどうすればいいんでしょうか?
$(TARGET_DIR)/target : ...
...
という Makefile に対して、
$ make TARGET_DIR='dirname with spaces'
とされた場合の対処に困っています。
とおもったら、
>>358-360 で少し似た話がでていたようですね。
文字列操作関数の問題が解決してないのか。
0486デフォルトの名無しさん
2005/04/27(水) 22:07:37http://www.scons.org/
0487デフォルトの名無しさん
2005/05/16(月) 15:24:340488デフォルトの名無しさん
2005/05/16(月) 23:14:490489デフォルトの名無しさん
2005/06/05(日) 19:59:570490デフォルトの名無しさん
2005/06/08(水) 13:08:56カコイイ書き方教えれ。
例) トークン表とパーサ表を吐く、Bisonに対するアクション指定
0491490
2005/06/08(水) 13:15:14分かりづらいよマニュアル......orz......
0492デフォルトの名無しさん
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を使わない”という条件で
この部分を簡単に作成するいい方法はないでしょうか?
ヨロシクお願いします。
0493492
2005/06/12(日) 00:28:58> $(FC) -o $@ $(OBJS)
訂正です。
$(TARGET) : $(OBJS)
<---Tab--->$(FC) -o $@ $(OBJS)
です。
0494492
2005/06/12(日) 00:31:30> SRCS = $(SHELL *.f90)
> OBJS = $(SRCS:.f90=.o)
SRCS = $(SHELL ls *.f90)
OBJS = $(SRCS:.f90=.o)
の間違いです。
何度もすいません。
0495デフォルトの名無しさん
2005/06/12(日) 12:02:030496492
2005/06/12(日) 14:51:16$(wildcard *.f90)
先ほど試してみましたが、これも存在してませんでした。
他に何か手法があればご紹介お願いいたします。
0498デフォルトの名無しさん
2005/06/12(日) 15:26:42Makefile を修正するシェルスクリプトを作成してそれを実行するようにすれば?
0499デフォルトの名無しさん
2005/06/12(日) 15:35:01そしてconfigureにたどりつきAutomakeがワイルドカードに未対応に気付くとか
0500492
2005/06/12(日) 16:12:12そうですね。最終的にはそうなってしまう可能性もあります。
別途
echo "SRCS = \" > list.mk
ls *.f90 >> list.mk
のようにしてから(正確には.「f90」を「.f90 \」への置換もしてますが)
Include list.mk
とすることでうまくいくことは可能なんですが、
Makefile単体で何とか出来ればなぁ、と思ったので
ご相談しました。
もし何かアイデアあればご教授ください。
なければ、こんな手法でやるしかないっすね。
0501デフォルトの名無しさん
2005/06/14(火) 20:53:36Sconsというのがあるけど、Python必須らしいです。
http://www.scons.org/doc/HTML/scons-user.html
意外と便利そうです。
import glob
files = glob.glob(wildcard)
0502デフォルトの名無しさん
2005/07/21(木) 13:55:49ディレクトリ移って作業するにはどうしたらよいんでしょう。
cd hoge; だと、その行のコマンドしか駄目ですし。
移るディレクトリにまた、Makefile作っておいて、
さらにmake呼ぶのがmake流なんでしょうか
0503デフォルトの名無しさん
2005/07/21(木) 13:57:080504デフォルトの名無しさん
2005/07/21(木) 19:17:41>移るディレクトリにまた、Makefile作っておいて、
>さらにmake呼ぶのがmake流なんでしょうか
automakeでmakeファイル作るときは
そんな風にするのが一般的だと思う
「make流か」と言われれば
?
0505デフォルトの名無しさん
2005/07/21(木) 20:17:330506デフォルトの名無しさん
2005/07/22(金) 00:51:40cd hoge; \
do_something; \
do_anotherthing
0507デフォルトの名無しさん
2005/08/14(日) 18:17:10include に渡すファイル名に半角スペースが入ってた場合、
¥マークでエスケープしないとダメっぽいんですが、
makeの変数に半角スペースの前に¥マークを置く方法ないでしょうか?
↓これをやってみたんですが無理でした。
$(subst \ ,\\\ , $(VALUE))
または include に半角スペースを含むファイルパスを渡す方法が無いでしょうか?
ちなみに "" で囲ってみたんですがダメでした。
0508デフォルトの名無しさん
2005/08/15(月) 13:21:520509デフォルトの名無しさん
2005/08/15(月) 15:16:580510デフォルトの名無しさん
2005/08/15(月) 17:30:57ふつうにできるょ?
0511507
2005/08/17(水) 23:01:21>>508
今から僕のコンパイル作業ディレクトリを変えるのはちょっと・・・
>>509
俺か!?俺のことか!?
>>510
makefile から makefile をインクルードする時のパスですにょん
-include xxxxx.mk
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html#TOC15
0512デフォルトの名無しさん
2005/08/18(木) 00:47:12> 今から僕のコンパイル作業ディレクトリを変えるのはちょっと・・・
includeされる側のディレクトリとは関係ないんじゃないの?
相対パスで指定するとかsymlink張ってみるとか、なんか工夫してみ。
0513デフォルトの名無しさん
2005/08/18(木) 04:49:48mingwのmakeってcygwin使わないんだっけ?
cygwinのmakeならこんなんで逃げれるけど。
-include $(shell cygpath -m $$(cygpath -d $(VALUE)))
0514507
2005/08/18(木) 23:29:14makeの解説よかったのに…勿体無い。
>>512
winなんでsymlinkは無理っす。
相対パスは切実にしたいんだけど、makeの組込定数の$(CURDIR)を使いたいもので、
これが絶対パスを返すので相対パスにできないんですよね・・・。
>>513
cygwinはいれてないなぁ(´∀`;)
まあ、なんとかしてみます。
>>512-513ありがとう。
0515507
2005/08/18(木) 23:39:30いや、でもあきらめたくない。
0516デフォルトの名無しさん
2005/08/19(金) 02:18:52DOCUME~1 みたいなやつ。たしかdir /xで見れたような。
あるいはsubstを使ってみるとか。
0517516
2005/08/19(金) 02:20:340518デフォルトの名無しさん
2005/08/19(金) 13:43:07WinNT移行でNTFSならシンボリックリンクできるよ。
「ジャンクション」或いは"symlink-1.02.zip"で検索して味噌。
0519デフォルトの名無しさん
2005/08/19(金) 13:58:590520507
2005/08/21(日) 01:39:22短い名前かぁ。盲点ですた。
>>518
まじっすか
>>519
シンボリックリンクに慣れるとねぇ。あれは便利すぎ。
でも、NTFSにもシンボリックリンクは実装してないだけで、
データ構造の中には予約としてあるっぽいよ
0521507
2005/08/21(日) 01:40:590522デフォルトの名無しさん
2005/08/23(火) 12:19:05だからね、ディレクトリに関してはジャンクションはディフォルトで使えるんですよ。
ファイルに対するジャンクションが意図的に禁止してあるだけで。
生半可な知識で語るくらいなら>518に書かれているツールの作者のページを読んできな。
0523デフォルトの名無しさん
2005/08/23(火) 13:28:110524デフォルトの名無しさん
2005/08/28(日) 19:09:51binディレクトリに展開するにはどうしたらよいですか?
0525デフォルトの名無しさん
2005/08/28(日) 19:19:06srcディレクトリのソースをコンパイルして
生成物をbinディレクトリに展開したいんです
0526デフォルトの名無しさん
2005/08/28(日) 20:53:450527デフォルトの名無しさん
2005/08/28(日) 21:02:300528デフォルトの名無しさん
2005/08/28(日) 21:15:230529デフォルトの名無しさん
2005/08/28(日) 21:37:51「cd bin」でbinディレクトリに移動してからコンパイルすればいい。
../srcディレクトリをVPATH等で指定してやれば問題はないはず。
0530デフォルトの名無しさん
2005/08/30(火) 09:09:34これでターゲットファイル名とソースファイル名のみを書いてやるだけで
自動でオブジェクトファイルだのを別ディレクトリに展開してくれるようになった。
お騒がせして申し訳ない。
0531デフォルトの名無しさん
2005/10/24(月) 15:09:121つめのプログラムをmakeのち実行した後に、2つめのプログラムをmakeのち実行をしたいのですが。
ちなみにcを使っています。
0532デフォルトの名無しさん
2005/10/24(月) 15:09:470533デフォルトの名無しさん
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です。宜しくお願いします。
0534デフォルトの名無しさん
2005/10/24(月) 23:25:09make -f 使えばいいんじゃないの?
0535デフォルトの名無しさん
2005/10/24(月) 23:26:55$(notdir ...)
0537デフォルトの名無しさん
2005/11/04(金) 08:43:29を
$(CC) $(CFLAGS) -o $< $<
って書き間違えた……
ヘッダ以外全て消え去ったよ
svnで管理してたから古い状態で復活できたけど、
10個近く新しいファイルを作ってた。
復活できたファイルも変更点がかなりあった……
0538デフォルトの名無しさん
2005/11/04(金) 10:30:57デフォルトの規則をそのまま使えばいいのに…
0539デフォルトの名無しさん
2005/11/04(金) 11:30:34VPath使ってたら明示せざるを得なくなった
+
コンパイラの切り替えとか含めててディフォルトルールじゃ対応しきれなくなってた
0540デフォルトの名無しさん
2005/11/12(土) 21:10:42されて欲しいのですが,表示されません.
調べて見た感じでは,「%.a: $($(basename $@))」の $@ が空になってしまう
みたいなのですが,これを動くようにする方法はありますか?
エッセンスだけを取り出したのでやや不自然な記述になってしまっていますが,
要は型ルールの依存ファイルに,マッチした語幹を使用したいってことです.
ただし,実際には X.b に相当する記述がたくさんあるので,下記のような記述
は避けたいと考えています.また,$(eval ) バグがあるので $(eval ) の使用
も避けたいと考えています.
0541540
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)
0542デフォルトの名無しさん
2005/11/29(火) 15:29:141ソースファイルから1実行ファイルを作るだけの処理を
一気にまとめてやるにはどういう風にmakeをかけば良いでしょうか?
0543デフォルトの名無しさん
2005/11/29(火) 17:37:050544デフォルトの名無しさん
2005/11/29(火) 21:42:02ありがとうございます。
環境の違いを書くのを忘れ申し訳ありません。
とりあえずallで指定しておくんだなと思って、こう書くことにしました。
とりあえず動いていますが、なんかおかしいところがあればご指摘ください。
CC = gcc
TARGET := $(patsubst %.c,%,$(wildcard *.c))
all : $(TARGET)
% : %.c
$(CC) -o $* $<
0545デフォルトの名無しさん
2005/11/29(火) 21:47:33環境はFedora Core 4、gcc 4.0.1、GNU Make 3.80でCのプログラムです。
0546デフォルトの名無しさん
2005/12/27(火) 13:12:320547デフォルトの名無しさん
2005/12/27(火) 19:22:300548デフォルトの名無しさん
2005/12/28(水) 15:47:52makefileで
# ----------------------------------------
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ターゲット内の記述でうまく期待した出力をさせるようにできないでしょうか?
0549デフォルトの名無しさん
2005/12/28(水) 22:07:47試してないが、これでどうかね?
OBJS = $(SRCS:.cpp=.o)
DEPENDS = $(addsuffix .d, $(OBJS))
$(OBJS) : %.o : %.cpp
g++ -c $< -o $@ -MD -MP
-include $(DEPENDS)
これなら明示的に make depend しなくても、
コンパイルが成功するたびに最新の依存関係に更新されて便利。
0550548
2005/12/29(木) 19:06:14依存関係を更新しないと、コンパイルが必要なファイルが分からないので
コンパイルが成功した時に依存関係が更新されても、手遅れではないでしょうか?
今、それぞれに無理やりディレクトリを付与してしまおうと考えていて、
ここまで来ました。
depend:
$(foreach IT,$(SRCS),\
$(RM) $(IT).dep; echo "$(dir $(IT))" > $(IT).dep; g++ -MM $(IT) >> $(IT).dep;\
)
このあとcatか何かでファイルを纏めればいいと思うのですが、問題は
echo "$(dir $(IT))" > $(IT).dep;
の部分で、出力結果に改行が入ってしまいます。
この改行を入れない方法はないでしょうか?
0551デフォルトの名無しさん
2005/12/29(木) 21:50:130553548
2005/12/30(金) 10:44:49VPATHだと、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))
これで……解決?
0554デフォルトの名無しさん
2006/03/01(水) 23:24:01例えば、ソースがカレントディレクトリ、出力が一つ下のディレクトリだと、
SRC = $(wildcard *.hoge)
DEST = $(addprefix ../,$(SRC:.js=.mage))
.SUFFIXES: .hoge .mage
all: $(DEST)
.hoge.mage:
@echo $@ $<
では上手くいきません・・・
.hoge../.mageみたいに関連付けられないのかなあ
0555デフォルトの名無しさん
2006/03/01(水) 23:28:010556デフォルトの名無しさん
2006/03/02(木) 00:05:11パターンルール使え。 % 入ってるやつ。
DEST の定義で .js ってなってるのは書き込み時の間違いか?
あと ../ は一つ上のディレクトリだと思う。
0557デフォルトの名無しさん
2006/03/02(木) 00:42:40SRC = $(wildcard *.hoge)
DEST = $(addprefix ../,$(SRC:.hoge=.mage))
.SUFFIXES: .hoge .mage
all: $(DEST)
../%.mage:%.hoge
@echo $@ $<
で行けましたー
>DEST の定義で .js ってなってるのは書き込み時の間違いか?
書き換えミスです。
>あと ../ は一つ上のディレクトリだと思う。
ああ、そっか、下でなくて、上ですね。
0558デフォルトの名無しさん
2006/03/18(土) 08:08:37事情があって生成ファイルにhoge.foo.etcのように複数のピリオドを持たせています。
適切なやり方がありましたら教えてください。
0559デフォルトの名無しさん
2006/03/18(土) 18:31:43パターンルール使え。 % 入ってるやつ。
0560デフォルトの名無しさん
2006/03/20(月) 17:23:300561デフォルトの名無しさん
2006/03/20(月) 17:28:22in any other country, the laws of the country
where you live apply.
0562デフォルトの名無しさん
2006/03/21(火) 02:51:13なにに困ってるのかサッパリわからん。
普通に使い分けられるだろ?
0563デフォルトの名無しさん
2006/03/21(火) 15:51:15ん?VisualC++て、nmakeだから、Borlandのmakeとはコマンド違うくない?
0564デフォルトの名無しさん
2006/03/24(金) 04:14:47と直接コンパイルしたものと、
CC=g++
CXXFLAGS = -fomit-frame-pointer -funroll-loops -march=opteron -ffast-math
hoge:
というMakefileを作ってコンパイルしたもので、できあがったファイルのサイズが違うのですが
なぜなのでしょうか?
0565デフォルトの名無しさん
2006/03/24(金) 07:50:490566デフォルトの名無しさん
2006/03/24(金) 14:19:56お前のその -O3 は一体何なんだと。
0567デフォルトの名無しさん
2006/03/24(金) 16:57:220568デフォルトの名無しさん
2006/03/24(金) 18:32:380569デフォルトの名無しさん
2006/03/26(日) 02:16:201 cpp -> 1 exe で。
現状ほぼ同じ Makefile をコピーして指定したソースファイルの名前を編集してやっているのですが、
非常にめんどくさいです。
もし可能ならばさらに、カレントディレクトリにある cpp をワイルドカードばりに取得して、
a.cpp -> a.exe のようにコンパイルしていきたいです。
よろしくおねがいします。
0570デフォルトの名無しさん
2006/03/26(日) 02:24:540571デフォルトの名無しさん
2006/03/26(日) 02:28:58違ったっけ?
0572569
2006/03/26(日) 08:42:02SRCS = hoge.cc mage.cc #もしくは $(wildcard *.cc) ?
EXES = $(SRCS:.cpp=.exe)
OBJS = $(SRCS:.cpp=.obj)
ときてさてどうすれば?
0573デフォルトの名無しさん
2006/03/26(日) 08:45:060574569
2006/03/26(日) 10:10:31$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
みたいにかいてもなんにもならないYO.
%.cc の値がどこからくるのかさぱーりわからん。
0575デフォルトの名無しさん
2006/03/26(日) 10:14:29書いただけじゃ何も起こらないよ。
ゴールを指定して make を実行しないとね。
0576569
2006/03/26(日) 10:19:29make hoge.o
とやれってこと?
一度の make で全部一気にやりたいって質問だったんだけど。
読み直してみたら、たしかに書いてないな orz
0577デフォルトの名無しさん
2006/03/26(日) 10:53:20make がどう動くのか、わかってないんじゃないか?
その状態じゃどうやっても無駄だぞ。
0578569
2006/03/26(日) 11:36:59all: 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 だのかかないでやりたい。
できますか?
0579デフォルトの名無しさん
2006/03/26(日) 12:43:000580デフォルトの名無しさん
2006/03/26(日) 13:15:06さぱーりわからん。
0581デフォルトの名無しさん
2006/03/26(日) 13:20:17俺もお前が何がわからんのか、さぱーりわからん。
とりあえず >>578 をパターンルール使って書き変えて動かなかった Makefile 晒せ。
0582デフォルトの名無しさん
2006/03/26(日) 15:28:00と書いてやれよ
からかってるんだろうけど不親切にもほどがある
0583デフォルトの名無しさん
2006/03/26(日) 16:40:05SRCS=$(wildcard *.cpp)
all: $(SRCS:.cpp=.exe)
%.exe: %.cpp
gcc $< -o $@
0584デフォルトの名無しさん
2006/03/26(日) 19:54:01必要な情報はそろっているのに、それだけのものを作れないのは何故か、
知りたかったんだ。スレ汚しスマンね。
0585デフォルトの名無しさん
2006/03/27(月) 23:19:08Thx.
お猿の訳本しか持ってないんでよくわかんなかったけど、
gmakeのマニュアルをちゃんと読むことにします。
http://www.ipp.mpg.de/~dpc/gmake/make_93.html
0586デフォルトの名無しさん
2006/04/13(木) 01:08:07したいと思って、make -DAAA=aaa とかやってもエラーになります。
こういうことはできないでしょうか?
0587デフォルトの名無しさん
2006/04/13(木) 01:10:04make CFLAGS="-DAAA=aaa"
だったような
0588デフォルトの名無しさん
2006/04/13(木) 01:12:090589デフォルトの名無しさん
2006/04/22(土) 23:02:520590デフォルトの名無しさん
2006/05/12(金) 02:30:570591デフォルトの名無しさん
2006/05/12(金) 03:23:14そういう英語の言い回しがあるのかと思ったけど>>1のオリジナルなのか。
0592デフォルトの名無しさん
2006/05/12(金) 23:36:57http://shakenbu.org/yanagi/d/20050214.html#p02
0593デフォルトの名無しさん
2006/05/13(土) 14:44:26なんでも頭文字にRつけりゃいいと思ってやがる
0594デフォルトの名無しさん
2006/05/13(土) 15:01:290595デフォルトの名無しさん
2006/05/13(土) 21:43:16まあでもRuby信者の俺には、けっこう便利よ
Rubyに集中できるし
0596デフォルトの名無しさん
2006/05/13(土) 23:32:460597デフォルトの名無しさん
2006/06/01(木) 19:07:06hoge.txtとmoge.txtを
それぞれ、xyzzyというツールで、
hoge.fooとmoge.fooに変換したいとします。
他の.txtというファイルは、別のツールで変換したいので、
.foo: .txt というサフィックスルールは使えません。
その場合、
hoge.foo: hoge.txt
xyzzy $< $@
moge.foo: moge.txt
xyzzy $< $@
といちいち書かなくてはいけないのでしょうか。
この
xyzzy $< $@
という部分を共通化することはできないですか?
0598597
2006/06/01(木) 19:13:49hoge.foo moge.foo: hoge.txt moge.txt
xyzzy $< $@
みたいに書くと、hoge.fooとhoge.txtが、moge.fooとmoge.txtがそれぞれ対応してくれないかなー
ということです。
0599デフォルトの名無しさん
2006/06/01(木) 20:49:14>.foo: .txt というサフィックスルールは使えません。
何で?
「.foo は .txt から作る」
「.hoge も .txt から作る」
でいいんじゃ…?
0600597
2006/06/01(木) 22:02:56同時に、test.txtからtest.fooを、qwertyというツールで作りたかったりするんです。
# もしくは、xyzzyツールの別のオプションで、と読み替えられてもかまいません
そうなると、サフィックスルールだと、hoge.txtもtest.txtも同じように扱われちゃって。
言葉足りなかったですね。
0601デフォルトの名無しさん
2006/06/02(金) 00:53:55FOO_FROM_TXT=hoge.foo moge.foo
$(FOO_FROM_TXT) : %.foo : %.txt
xyzzy $< $@
0602597
2006/06/02(金) 01:01:45すげえ!
と思ったけどできませんでした orz
make: *** No rule to make target hoge.txt needed by hoge.foo
みたいに言われました。
gnu makeだと駄目?
こういう機能って、どっかに書いてありますのン?
0603デフォルトの名無しさん
2006/06/02(金) 01:04:40hoge.txt はあるのか?ファイルがないんじゃないの?
これはスタティックパターンルールっていう構文。
http://www.gnu.org/software/make/manual/html_node/Static-Pattern.html
0604597
2006/06/02(金) 01:28:17んー、本プロジェクトで動かないのは、別な要因があるようです(´・ω・`)
探ってみます。
>>603
マニュアルにもちゃんとあるんですね。サンクスです。
0605597
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というツールで、行いたいのです。
うまいことできないかなー。
0606597
2006/06/02(金) 02:09:33hoge_foo_bar.txt→hoge_test_bar.foo
moge_foo_bar.txt→moge_test_bar.foo
でした。
0607597
2006/06/02(金) 02:20:15hoge_foo_bar.txt→hoge_test_bar.foo
moge_foo_qwerty.txt→moge_test_qwerty.foo
真ん中のfooとtestだけ違うんです・・・。
0608597
2006/06/02(金) 02:25:17なんとかかんとか
とすると、うまく行かないみたいです。
TARGET = hoge_bar_test.foo moge_xyzzy_test.foo
で、
%test.foo: %foo.txt
なんとかかんとか
だとうまくいきます。
%って2回は使えない罠?
名前を変えるところ(foo→test)を最後に持ってくるしかないのだろうか。
0609デフォルトの名無しさん
2006/06/02(金) 09:31:03% はいっこじゃないとだめ。いっこなら、頭でも途中でもいい。
0610597
2006/06/02(金) 19:23:49ファイル名変更して、
%test.foo: %foo.txt
で、いこうと思います。
0611デフォルトの名無しさん
2006/07/22(土) 23:36:57超いまさらだけど、スレタイ、せっかくだから頭文字mで統一したら?
make makes a massive mess
とか。
0612デフォルトの名無しさん
2006/07/22(土) 23:50:02語呂が悪い。
make makes many messes のほうがいいかな。
0613デフォルトの名無しさん
2006/08/01(火) 14:00:24ルール連鎖の中で生成された中間ファイルはmakefileにより特別扱いされる。
中間ファイルはターゲットとしては現れず、削除される。
という動作になりますが、これが明示的ルールと同様の動作になるやり方を教えてください。
つまり、
1. 中間ファイルがそのまま残る。
2. (全然別系統もしくは手動による)中途ファイルの変更があったときは、
その中間ファイルからmake処理が行われる。
というようにしたいのです。
0614デフォルトの名無しさん
2006/08/01(火) 15:09:19何か勘違いしてると思うよ。
中間ファイルは削除されたんじゃなくて、もともと無かったんだよ。
0615デフォルトの名無しさん
2006/08/01(火) 21:03:34makeを実行すると、こちらの書いたルール通りに実行し、
directoryに中間ファイルがたくさん作られているのが見えます。
また、最後に
rm hoge huge .........
と中途で生成された大量のファイルをrmしているのが見えます。
0616デフォルトの名無しさん
2006/08/01(火) 21:57:56それは「暗黙のルール」じゃないんじゃないか?
make -pして、何が問題なのかもう一度考えてみるべし。
0617デフォルトの名無しさん
2006/08/01(火) 23:29:50暗黙ルール使わなけりゃいいんじゃね?
0618k ◆WFGp1NZuiw
2006/08/03(木) 21:43:19http://www.ecoop.net/coop/translated/GNUMake3.77/make_4.jp.html#SEC35
0619デフォルトの名無しさん
2006/09/03(日) 21:28:12書かずにすむ方法はないでしょうか。
たとえば以下の3つのルールを1つにまとめることはできないでしょうか。
%.x: %.abc
command1
command2
command3
%.x: %.def
command1
command2
command3
%.x: %.ghi
command1
command2
command3
0620デフォルトの名無しさん
2006/09/03(日) 21:32:12これじゃ駄目か?
%.x:
command1
command2
command3
0621デフォルトの名無しさん
2006/09/03(日) 21:40:54それだと$<が空っぽで使えませんでした。
commandの中で$<と$@を参照してます。
0622デフォルトの名無しさん
2006/09/03(日) 21:46:00じゃ、続けて
%.x: %.abc
%.x: %.def
%.x: %.ghi
って追加すると、解決できないかね?
駄目だったら define 使えばいいんだけどね。
0623デフォルトの名無しさん
2006/09/03(日) 21:53:35それだと %.x: %.ghi だけルールが設定されて、
他のルールはコマンドなしのためにキャンセルされないですか?
0624デフォルトの名無しさん
2006/09/03(日) 21:54:44コマンドなしのルールはキャンセルされるって、どこで仕入れたガセネタだ?
0625デフォルトの名無しさん
2006/09/03(日) 22:07:33勘違いでした。暗黙のルールをキャンセル方法でした.
結局>>622の方法でも $< は空っぽでした。
0626デフォルトの名無しさん
2006/09/03(日) 22:16:37実際の依存関係を設定してないんじゃないか?
%.x:
echo $@ $<
に続けて
a.x: a.abc
と書けば a.x a.abc が出力されるだろう。
0627デフォルトの名無しさん
2006/09/03(日) 22:38:51ファイル一つ一つ書かないとダメですか?
0628デフォルトの名無しさん
2006/09/03(日) 22:40:41スタティックパターンルールでもいいぞ。
$(ABC_X_FILES) : %.x : %.abc
$(DEF_X_FILES) : %.x : %.def
0629デフォルトの名無しさん
2006/09/03(日) 22:58:20ありがとうございます。できました。
0630デフォルトの名無しさん
2006/09/04(月) 00:15:41Ruby使いには、rakeはいいねえ。
0631デフォルトの名無しさん
2006/09/15(金) 17:22:16make[1]: Entering directory ...
の後に表示されるディレクトリ名を絶対パスから相対パスにしたいんだがどうしたらいい?
結果が長くてうっとうしい
うっとうしい以外に害は無いんだけどね
0632デフォルトの名無しさん
2006/09/15(金) 17:54:270634デフォルトの名無しさん
2006/09/17(日) 11:14:28Microsoft (R) Program Maintenance Utility Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
NMAKE : fatal error U1073: 'love' のビルド方法が指定されていません。
Stop.
。・゚・(ノД`)・゚・。
0635デフォルトの名無しさん
2006/09/17(日) 16:43:39昔ネットで見たのですが忘れてしまいました。
どなたか教えてくれませんか?
0636デフォルトの名無しさん
2006/09/17(日) 16:52:16(add-hook
'makefile-mode-hook
'(lambda ()
(local-set-key "\C-cc" 'compile)
))
0637デフォルトの名無しさん
2006/09/17(日) 17:05:23そういうフィルタを書くというのは、よくやるなぁ。
ついでに注意すべき warning なんかを強調してみたりとか。
0638デフォルトの名無しさん
2006/09/29(金) 00:41:47rakeの日本語の資料はどこを見ればいいのかな?
機能をmakeと対比してあるとありがたい。特に再帰処理関係で。
0639k ◆WFGp1NZuiw
2006/09/30(土) 22:40:57http://www.dodgson.org/omo/t/?date=20060901
0640デフォルトの名無しさん
2006/10/04(水) 23:08:34ありがとう。これでコンパイルが大分楽になる。
lispわかんないと一流のプログラマーにはなれないな。
がんばるよ。
0641デフォルトの名無しさん
2006/10/20(金) 21:26:550642デフォルトの名無しさん
2006/10/21(土) 06:04:160643デフォルトの名無しさん
2006/10/27(金) 12:04:18GNU MAKE
ttp://www.amazon.co.jp/GNU-Make/dp/4873112699/
7章 ポータブルなmakefile P129
・・・次に各プラットフォームごとにどういったツールが使えるのか明らかにし、どれを使うのか
明らかにしなくてはいけません。対象となるすべてのプラットフォームで利用可能なツールや機能だけを
使うのが究極の姿です。これは「最小公倍数方式」と呼ばれ・・・
数学しなくなってだいぶたつし、原文読んでないけど、
これって「最小公倍数」じゃなくて「最大公約数」だよな?
0644デフォルトの名無しさん
2006/10/27(金) 15:17:43原文見てないけど、「最小公分母」の誤訳でしょ。
0645デフォルトの名無しさん
2006/10/29(日) 19:04:490646デフォルトの名無しさん
2006/12/02(土) 23:58:48hoge.cc -> hoge.o -> hoge
の順番に作りたい時、
hoge.o -> hoge
のときにg++じゃなくてccになっちゃうんだけど、
これってCC=g++にしておくしかない?
0647デフォルトの名無しさん
2006/12/03(日) 10:32:310648646
2006/12/04(月) 02:15:54.cも混在してるときに、.cもg++でcompileするでしょ。
そのときに生成されるhoge.oが、
g++ -c hoge.c -o hoge.o
cc -c hoge.c -o hoge.o
で全く同じものになるのかが分からなかったので。
0649デフォルトの名無しさん
2006/12/04(月) 10:29:190650デフォルトの名無しさん
2006/12/05(火) 14:55:28ccでリンクできてるなら、それでまったく問題ない。
g++のときは暗黙に -lstdc++ がつくだけ。
0651デフォルトの名無しさん
2007/01/04(木) 21:43:34a.log, b.log, c.log とログにしたいんだけど、どうかけばいいですか?
INFO:
grep COMMENT $(SRCS) > $(LOGS)
みたいにやったら全部のソースを一変にgrepしようとしやがりました。
そうじゃなく個別にやりたいです。
0652デフォルトの名無しさん
2007/01/05(金) 01:32:28for i in *.cpp; do grep COMMENT $i > `echo $i|sed -e 's/\.cpp/.log/'`;done
とか。
0653デフォルトの名無しさん
2007/01/05(金) 10:41:05http://www.ecoop.net/coop/translated/GNUMake3.77/make_10.jp.html#SEC102
0654デフォルトの名無しさん
2007/02/13(火) 22:23:130655デフォルトの名無しさん
2007/02/14(水) 19:27:32∧_∧ _ __ (_ / (´∀` )
( ´∀`)/ ) ) | | // \
( ⊃/ // ∧_∧ (__(_/` |
\__// ( ´∀`) _///
 ̄ ∪ ̄∪ (__(__)
0656デフォルトの名無しさん
2007/02/15(木) 03:19:04makeの意味わかってる?
gccでコンパイルとか言うのなら、rakeでできるよ。
Makefileがあって、それをmakeしたいのなら、rakeではできない。
makeを使おう。
0657デフォルトの名無しさん
2007/02/15(木) 20:52:50まじむずい。autoconf、automake、Makefile.am
Makefile.in、configure.inまじややこい。
0658デフォルトの名無しさん
2007/02/15(木) 22:43:13最初は手書きMakefileでいいさ。
0659デフォルトの名無しさん
2007/02/18(日) 04:52:13makeごと捨て去ってもいいんだけど
なんか他にいいビルドツールないかな?
0660デフォルトの名無しさん
2007/02/18(日) 11:07:14もっと楽ちんなものないのかなあ。
0661デフォルトの名無しさん
2007/02/18(日) 13:27:030662autoXXの癌はlibtoolだと思う
2007/02/22(木) 01:07:50libtoolはクロスコンパイルで「共有ライブラリとそれを利用する共有ライブラリから構成されるパッケージ」を作ることを殆ど考慮してない。
クロスコンパイルだとインストール先ターゲットは/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は開発者のためのツールではないと認識することが大切です。
0663デフォルトの名無しさん
2007/03/20(火) 05:00:530664デフォルトの名無しさん
2007/04/24(火) 17:30:42http://www2s.biglobe.ne.jp/~idesaku/sss/tech/rake/index.html
rakeの日本語資料が少ないので、ここいいですね。
0665デフォルトの名無しさん
2007/04/24(火) 20:42:09Makefileより見た目ゴチャゴチャしててなんかいやだな。
0666デフォルトの名無しさん
2007/04/24(火) 21:33:43見た目も何もRubyプログラムそのものですからね
Ruby知ってたら、すごい楽できるよ
0667デフォルトの名無しさん
2007/04/24(火) 21:34:27ゴチャゴチャしてるという印象はこのへんかね。
ターゲット(タスク)を裸で書けない(文字列かシンボルで書く)
ファイル名単独じゃなくて、いちいちfileと書く
:ではなく=>
doとかendとか付ける
外部コマンドをそのまま書けない
>>664
ダグラス・アダムズネタが混ざってるな 。
0668デフォルトの名無しさん
2007/04/24(火) 21:46:49を妄想してみたが、Rubyだとブロックで書くところを関数に抜き出さないと
いけないから書きにくいな。C++でboost使うとlambdaっぽいことができる
からマシになるのかな。
0669デフォルトの名無しさん
2007/04/24(火) 21:50:450670デフォルトの名無しさん
2007/04/24(火) 22:06:16pはperlだろうが lispつながり(?)でprologを連想。
ホーン節って依存関係定義そのものだな。
0671デフォルトの名無しさん
2007/04/24(火) 22:31:430672デフォルトの名無しさん
2007/04/24(火) 23:47:560673デフォルトの名無しさん
2007/04/25(水) 01:23:22VBake
make#
0674デフォルトの名無しさん
2007/04/25(水) 01:37:29つ♥
0675デフォルトの名無しさん
2007/04/25(水) 15:04:250676デフォルトの名無しさん
2007/04/25(水) 21:31:46makedependってこと?
0677デフォルトの名無しさん
2007/04/25(水) 21:40:32file '.depend.mf' => そーす do |t|
sh 'gcc -M ...'
end
import '.depend.mf'
だろうか。
0678デフォルトの名無しさん
2007/04/25(水) 23:22:530679デフォルトの名無しさん
2007/04/26(木) 10:50:56importで導入できるんだね、ありがと
0680奉祝スレ5周年
2007/08/17(金) 21:40:54資料or情報はありませんか?
片っ端からトライしたところ iajvbm の6文字が何らかの機能を
持っているようですが。
巨大makefileのデバッグに使用したいです。
> make -v
GNU Make 3.81
:
:
This program built for i686-pc-cygwin
>
0681デフォルトの名無しさん
2007/08/17(金) 22:00:45man にも簡単な説明が出てる。
0682デフォルトの名無しさん
2007/08/23(木) 02:41:13(autotools含めてバッドノウハウの塊だと思う)
何故代替品は出てこないんだろう?
オープンソース界隈で普及しすぎて、デファクトになっちゃったのが原因なのかね。
マイクロソフトの独占なんかより、makeの独占を禁止してほしい。
0683デフォルトの名無しさん
2007/08/23(木) 02:45:27ant, bjam, rake, SCons とかは代替品とは言わんの?
0684デフォルトの名無しさん
2007/08/23(木) 05:44:050685デフォルトの名無しさん
2007/08/23(木) 22:06:01makeも使えない奴はたいしたコードはかけないし、
make使える奴は代替の必要を感じない
そういう意味でsubversion開発者は実に偉大だ
0686デフォルトの名無しさん
2007/08/26(日) 22:45:52rakeつかってる
0687デフォルトの名無しさん
2007/09/05(水) 19:03:57RakeUserGuide - Rake ユーザガイド
http://www.kyobashi.org/hf/RakeUserGuide/?AboutRakeUserGuide
___
,;f ヽ
i: i
| |
| | ///;ト,
| ^ ^ ) ////゙l゙l; ありがたや〜
(. >ノ(、_, )ヽ、} l .i .! | ありがたや〜
,,∧ヽ !-=ニ=- | │ | .|
/\..\\`ニニ´ !, { .ノ.ノ
/ \ \ ̄ ̄ ̄../ / .|
0688デフォルトの名無しさん
2007/10/03(水) 18:54:330689デフォルトの名無しさん
2007/10/03(水) 19:00:260690デフォルトの名無しさん
2007/10/03(水) 19:48:03作った物消すのって何したいん?、コンパイルチェックだけ?
0691デフォルトの名無しさん
2007/10/03(水) 20:25:190692デフォルトの名無しさん
2007/10/16(火) 09:10:290693デフォルトの名無しさん
2007/10/16(火) 10:52:08できるよ
ただし他の拡張子のついてないファイルもダブルクリックでmakeされちゃうけど
0694デフォルトの名無しさん
2007/10/27(土) 01:05:58>>693の問題があるので、俺は、適当に、batファイル書いて、クリックしてるけど
cygwinコンソール開くの面倒な時も多々あるw
0695デフォルトの名無しさん
2007/10/27(土) 19:15:090696デフォルトの名無しさん
2007/12/09(日) 23:42:59make all clean
0697デフォルトの名無しさん
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 : 」のように書きたいのですが、
元と後が同じだとうまくいきません。
どうかよろしくお願いします。
0698デフォルトの名無しさん
2007/12/24(月) 15:48:00それ循環定義になるならムリだと思う。
ただ現実的な解決方法としては
jpeg と jpg にしてしまうとか。
もしくは 一旦別の拡張子のファイルを touch して
jpg -> jpg コンバートかますとかならやれそう
0699デフォルトの名無しさん
2007/12/24(月) 15:51:55THUMBNAIL/%.JPG : IMG/%.JPG
convert -geometry 150x150 $< $@
0700697
2007/12/24(月) 15:56:38ありがとうございます。
>もしくは 一旦別の拡張子のファイルを touch して
初めに思いついたのがこれだったんですけど、これだと一時ファイルをとっておく必要があるんですよね・・・
>jpeg と jpg にしてしまうとか。
これがいいですかね
0701デフォルトの名無しさん
2007/12/24(月) 15:58:03全然サフィックスルールじゃないけど
SRCJPG = ${shell ls IMG/*.JPG}
${SRCJPG}: TUMBNAIL/%.JPG: IMG/%.JPG:
convert -geometry 150x150 $< $@
という感じじゃダメかな。
(Windowsならlsをdirとかに変えて)
0702697
2007/12/24(月) 16:14:05これだ!ありがとうございます!
うまくいきました
0703デフォルトの名無しさん
2007/12/30(日) 12:19:08.hを修正してもコンパイルしてくれないのですが、どうしたらいいですか?
誰か教えて
0704デフォルトの名無しさん
2007/12/30(日) 12:22:59$ g++ -MM
で出てくる依存関係をMakefileで読み込むようにしとけ
0705デフォルトの名無しさん
2007/12/30(日) 13:59:11a.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
というルールを記述することは避けたいです.
0706デフォルトの名無しさん
2007/12/31(月) 15:47:100707デフォルトの名無しさん
2007/12/31(月) 16:53:06なんか顔もゴリラなんだけど、あのときはまさに野獣になって、日本語もさえも通じなくなる。
まがりにも外国語学部イタリア専攻で行ってるんだけど、あれじゃ外国語とか言うよりもゴリラ語。
きっとボブサップもあんな感じなんだろうな。ただ椿原慎二のチンコはサップに比べると小さいし臭いけどね。
0708デフォルトの名無しさん
2007/12/31(月) 22:50:40年の瀬だっちゅうのに悲しくないのかね
0709デフォルトの名無しさん
2008/01/08(火) 20:41:34外部の環境変数が設定してあるファイルを
makefileの中から読み込むことって出来ますか?
出来るなら方法を教えてください。
0710デフォルトの名無しさん
2008/01/10(木) 12:43:51実例が見たければ、linux のソースなんかで使われているので
grep -n include /usr/src/linux/Makefile
でも汁
0711デフォルトの名無しさん
2008/01/10(木) 21:44:05おお。ありがとうございます。助かりました。
0712デフォルトの名無しさん
2008/01/22(火) 15:08:090713デフォルトの名無しさん
2008/01/25(金) 15:06:10CC=bcc32
all:
${CC} hoge.c
というようなmakefileを実行する時に
make -e CC=gcc
として${CC}をgccに変更して実行させたいのですが、うまくいきません。
コンソールにそのまま gcc hoge.cと表示されてしまいます。
-eで書き換えた変数はサブシェル?として実行されないのでしょうか・・・?
0714デフォルトの名無しさん
2008/01/25(金) 15:23:19makeよぶシェルに-nつけてました。アホでした。
0715デフォルトの名無しさん
2008/02/01(金) 19:39:290716デフォルトの名無しさん
2008/02/01(金) 21:44:28makeの-jオプションのことでいい?
それとも、複数のホストで分散コンパイルするという話なら
distccでぐぐるといいかも。
0717デフォルトの名無しさん
2008/02/13(水) 15:12:44最新のものはコンパイルしないようにするにはどのようにしたらよいのでありましょうか?
0718デフォルトの名無しさん
2008/02/13(水) 19:24:180719デフォルトの名無しさん
2008/02/13(水) 21:48:25依存関係の書きかたを間違えてるんじゃないの?
0720デフォルトの名無しさん
2008/02/19(火) 08:37:350721デフォルトの名無しさん
2008/02/19(火) 09:48:35C++ sourceで書けばいいんじゃね?
0722720
2008/02/19(火) 10:18:42ifの様な構文を使って
CC=cl
と
CC=g++
を切り替えたいのですが
0723デフォルトの名無しさん
2008/02/19(火) 10:41:37どのmakeをお使いですか?
GNU make、BSD make、nmake、それぞれやり方が違うと思われ。
0724720
2008/02/19(火) 11:14:260725デフォルトの名無しさん
2008/02/19(火) 11:27:070726デフォルトの名無しさん
2008/02/19(火) 11:41:480727デフォルトの名無しさん
2008/02/19(火) 11:43:080728デフォルトの名無しさん
2008/02/19(火) 11:45:00共通のMakefileではムリじゃないかなあ。
条件分岐はGNU makeだとifeq/ifdef、nmakeだと!IF/!IFDEFだし。
ふつうは、プラットフォーム毎にMakefileを用意したり生成したりする
のではないかと。
0729デフォルトの名無しさん
2008/02/19(火) 13:09:40makefileスレに行け。
http://pc11.2ch.net/test/read.cgi/tech/1029599472/
0730デフォルトの名無しさん
2008/02/19(火) 13:30:100731デフォルトの名無しさん
2008/02/19(火) 13:33:172.くだ質スレだと勘違いした
3.じつは人類滅亡の予言
0732デフォルトの名無しさん
2008/02/19(火) 13:38:57/ ヽ, ::.
/ ::.
/ :::.
″<●> <●>::.
| 、_,、_, ::::.
| !.ノ :::::::::
/ ..::::.
/ :::::
0733729
2008/02/19(火) 13:47:300734デフォルトの名無しさん
2008/02/19(火) 16:50:40makefile.vc
makefile.gcc
makefile.cygwin
makefile.tcc
makefile.pl
makefile.rb
makefile.cobol
のように分けますね
0735デフォルトの名無しさん
2008/02/19(火) 18:36:18これを毎回指定しないでも並列コンパイルする方法はないでしょうか?
OSはFedora8、コンパイラーはintel10です。
0736デフォルトの名無しさん
2008/02/19(火) 18:40:300737デフォルトの名無しさん
2008/02/19(火) 18:50:150738デフォルトの名無しさん
2008/02/19(火) 19:03:080739デフォルトの名無しさん
2008/02/19(火) 19:19:30GNU make自身には-jのデフォルト値を変える手段はないですね。
737みたいにエイリアスにするか、シェルスクリプトにするか。
0740デフォルトの名無しさん
2008/02/19(火) 19:29:22linuxカーネルとかbbみたいなオプション出てこないのもよい。
見た目だけでしか判断できないので。
0741デフォルトの名無しさん
2008/02/26(火) 23:51:30(コード)
#endif
みたいなのがソース中に書いてあって、これをmake時に、define したいのですが、
$ make CFLAGS="-DAAA" とすると、もとのMakefileで指定されていたCFLAGSが
上書きされてしまいます。CFLAGS+="-DAAA" のように追加指定で make 時の
コマンドライン上で指定って出来ないのでしょうか?
0742デフォルトの名無しさん
2008/02/27(水) 15:41:38$(CC) $(CFLAGS) $(MYCFLAGS) -o (ry
0743デフォルトの名無しさん
2008/03/22(土) 16:52:52.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 ...) は、まあ、動かないのですが、
何かうまく動かす方法はないでしょうか?
0744デフォルトの名無しさん
2008/03/22(土) 19:37:470745デフォルトの名無しさん
2008/03/22(土) 21:57:27%.jpg: $(wildcard %.pnm %.ppm %.pgm %.pbm)
のルールが実行時に hoge.jpg の依存関係を調べる瞬間に
展開されてほしいわけで、
%.jpg: $(filter %.p*m,$(PNMFILES))
なども考えましたが、ルール右側で関数を呼びつつ、その引数として
左側のパターンのファイル名を渡す方法がどうもわからないのです。
makeを触るのは数年ぶりで、正直簡単なことに詰まっているだけなのか、
それとも元々難しいのか判断に迷ってここに質問してみました。
0746デフォルトの名無しさん
2008/04/07(月) 11:39:37# あ、プログラマじゃないよ。大規模プロジェクトの管理だけどね
でもちょっと部署が変わって
Windowsなどという邪悪な環境下お仕事する必要が生まれました。
Windows XPで使いたいのですが、どこからmakeをだうそ出来るですか?
つまらない理由で、コンパイルさせてもらえないので、バイナリで
だうそしたいです
gmakeでもBSDの旧makeでも何でもいいです
0747デフォルトの名無しさん
2008/04/07(月) 11:48:52日本語でOK。
考えられるのは、MS謹製のVisualStudioについてくるnmakeかCygwinのgnu-makeかね。
0748デフォルトの名無しさん
2008/04/07(月) 12:51:51ありがと
でも私は日本人ですから日本語不自由ありません
0749デフォルトの名無しさん
2008/04/07(月) 13:05:23・句点を忘れずに。
・奇妙な造語は避ける。
・読む人間の視点で冷静に読み直す。
処で、コンパイルさせて貰えないのに拾ってきたツールは使ってもいいの?
0750デフォルトの名無しさん
2008/04/07(月) 19:52:28msysにバイナリのgmakeが入ってる
Current Release: msys-1.0.10 (2004-03-16 05:47)を落とすよろし
0751デフォルトの名無しさん
2008/05/24(土) 00:19:06IDEで指定したインクルードパスが認識されないって相当ウンコなバグだと思うんだが。
0752デフォルトの名無しさん
2008/05/25(日) 19:41:490753デフォルトの名無しさん
2008/05/25(日) 19:49:01確かにウンコなバグだ!
問題箇所は鏡があればすぐに見つけられるだろう
0754751
2008/05/26(月) 00:20:020755デフォルトの名無しさん
2008/05/26(月) 01:21:23姿見くらい持った方が良いと思うんだ、でもレポート乙です。
0756デフォルトの名無しさん
2008/06/08(日) 22:26:26色々多すぎてどれがいいかわからん><
schemeベースのやつがあればいいんだけど
0757デフォルトの名無しさん
2008/06/19(木) 15:29:27[tab]ls noexistent; true
このMakefile、FreeBSDのmakeだとエラーで止まってしまう。
GNU make だと止まらない。
どっちが正しいのですか?それともこれは未定義ですか?
0758デフォルトの名無しさん
2008/06/20(金) 01:47:51ソースファイルごとに違うコンパイルオプションを付加したいこともある
これってどうにかしてうまくやる方法あるかなあ?
0759デフォルトの名無しさん
2008/06/20(金) 01:52:54GNU make 限定かもしれないけど、ターゲットごとに変数を設定できる。
http://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html
さらに % を使ったパターンに対しても同様に設定できる。
http://www.gnu.org/software/make/manual/html_node/Pattern_002dspecific.html
0760デフォルトの名無しさん
2008/06/20(金) 02:03:24Cent OS 5にて
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
これはフリーソフトウェアです. 利用許諾についてはソースを
ご覧ください.
商業性や特定の目的への適合性の如何に関わらず, 無保証です.
This program built for i686-redhat-linux-gnu
$ make
Is noexistent; true
/bin/sh: Is: command not found
止まったけど……
0761デフォルトの名無しさん
2008/06/20(金) 02:08:12マジか!
あっさりできるのか!
トン
別件だけど、もしかして GNU make ならコマンドラインから make 変数に値を追加したりできる?
variable += 〜 って Makefile 内でしかできないよね?
ちなみに今は
CFLAGS = 〜 $(OPT)
みたいにあらかじめダミーの make 変数を設定しておいて
コマンドラインから OPT= で設定してる
0762デフォルトの名無しさん
2008/06/20(金) 02:21:42コマンドライン引数の処理は Makefile の処理の前処理だから、追加は無理でしょ。
CFLAGS みたいにコマンドライン引数で設定される変数は Makefile 内では設定せずに、
ルールのコマンド内で最後に指定するのが、マナー(?)、じゃないか?
0763デフォルトの名無しさん
2008/06/20(金) 11:11:39Isじゃなくてlsです。Isだとそこでシェル全体がエラーを返してしまいます。
てかlsなんて使わないで、例としてはこれでよかったですね。
test:
[tab]false; true
こちらのGNU make も 3.81です。
0764デフォルトの名無しさん
2008/06/20(金) 12:44:44false || true
と書く。
0765757
2008/06/20(金) 16:08:09実際はエラーかどうか関係なくtrueの部分にあるコマンドも実行してくれなきゃ困るので
||じゃだめです
これが、FreeBSDのmake がおかしいという結論なら
GNU make を使ってねというポリシーにしようかなと思っています。
0766デフォルトの名無しさん
2008/06/20(金) 22:57:02大昔のCシェルは&&と||の動作が逆だったらしい。
(CライクなだけにCと一緒で、0が失敗だった)
&&だったらどうなりますか。
あるいはSHELL=/bin/shと明記して実行してみるとどうなりますかね。
でもmakeで動くのはデフォルトで/bin/shだよなーJK
0767デフォルトの名無しさん
2008/06/20(金) 22:57:390768デフォルトの名無しさん
2008/06/21(土) 02:51:26そうなん?
CFLAGS って普通はコマンドラインで指定されると仮定して
Makefile 内では設定しないものなのか…
アーキテクチャ指定とか必ず付けたいコンパイルオプションがあるのだが
0769デフォルトの名無しさん
2008/06/21(土) 12:41:40実行(exec)不可ならばシェルを起動してそれに渡すものがあった気がする。
つまり、実行行に";"や"&&"等が含まれる場合にシェル経由になるか(或いは自身で解釈して実行するか)は
各makeに依存するんじゃないかな。
パイプやリダイレクト等も含めて。
で、必ず複数を実行する(";"でつなげる)ならば、シェルを起動するようにしてみるとか。
最後のコマンドのステータスが必要なら、別途シェルスクリプトを書いてそれを実行するとか。
いや、うまくいくかは知らないけどね。
0770デフォルトの名無しさん
2008/06/21(土) 15:22:23コマンドラインで指定されたら Makefile 内の設定は基本的に無視されるらしい。
http://www.gnu.org/software/make/manual/html_node/Override-Directive.html
必ず付けたいのがあるなら、 override CFLAGS+=... で付けられそう。
0771デフォルトの名無しさん
2008/06/21(土) 16:47:560772デフォルトの名無しさん
2008/06/21(土) 17:21:510773デフォルトの名無しさん
2008/06/21(土) 18:47:500774デフォルトの名無しさん
2008/06/21(土) 20:51:290775デフォルトの名無しさん
2008/06/21(土) 21:11:53make.confとかは?
0776デフォルトの名無しさん
2008/06/22(日) 01:31:07なるほど、んじゃBSD make 用になにか考える方向ですかね…
0777デフォルトの名無しさん
2008/06/26(木) 03:49:36cat <<EOF > doc.txt
hoge
EOF
とすれば、中身がhogeのdoc.txtが生成されます。
しかしMakefileの中で、
doc:
cat <<EOF > doc.txt
hoge
EOF
とやっても、
$ make doc
make: hoge: Command not found
となってしまいます。
どうやったら、shellと同様の操作をMakefileの中で行えますか?
0778デフォルトの名無しさん
2008/06/26(木) 08:37:19[TAB]echo hoge > doc.txt
[TAB]echo hoge2 >> doc.txt
くらいしか思いつかね。
0779デフォルトの名無しさん
2008/06/26(木) 11:01:50シェルスクリプトを呼び出すのはダメ?
0780777
2008/06/26(木) 13:47:45ありがとうございます。
実際にはあるソフトを立ち上げて、
それにコマンドを打ち込むという作業なので、
結局shell scriptを作りました。
0781デフォルトの名無しさん
2008/06/29(日) 07:06:00makeを長い事使っているのですが、あんまり踏み込んで使った事はありません。
今回もこった事をするつもりはなかったのですが、なんか基本的なことでつまずいてしまって困っています。
以下の例のように、Makefileがあるディレクトリとは別のディレクトリに
ソースコードがあり、コンパイルしてできるオブジェクトも別ディレクトリに
置きたいという状況で、暗黙のルールを使うと以下のように nothing to be done
といわれてなにもコンパイルしてくれません。なぜダメなのかまったく理解できません。
srcかobjをやめたり、暗黙のルールをやめれば期待通りにコンパイルしてくれるのですが、今回それはやめられないので困っています。
暗黙のルールを使うのは、なにか別の方法で同じことができればそれでもよいのですが...make gruのアドバイスをお願いします。
0782デフォルトの名無しさん
2008/06/29(日) 07:06:33CentOS release 5 (Final)
$ make -v
GNU Make 3.81
This program built for i686-redhat-linux-gnu
$ cat Makefile
%.o: %.c
cc $< -o $@
all: obj/foo.o
obj/foo.o: src/foo.c
$ ls -lR
.:
total 24
-rw-r--r-- 1 hunya hoge 83 Jun 29 05:21 Makefile
drwxr-xr-x 2 hunya hoge 4096 Jun 29 05:21 obj
drwxr-xr-x 2 hunya hoge 4096 Jun 29 05:22 src
./obj:
total 0
./src:
total 8
-rw-r--r-- 1 hunya hoge 29 Jun 29 05:22 foo.c
$ make
make: Nothing to be done for `all'.
0783781
2008/06/29(日) 09:31:13パターンルール %.o: %.c は obj/foo.o: src/foo.c にマッチしないようです。
パターンを obj/%.o: src/%.c に変更すると期待の動作をするようになりました。
実際には以下のように書く事にします。
OBJDIR=obj/
VPATH=src
${OBJDIR}%.o: %.c
${CC} -c $< -o $@
{OBJDIR}foo.o: foo.c
今回も人にきちんと質問すると自己解決することがあるという典型例でした。。。
あと一晩寝ると解決するともいう。
皆さんありがとうございました。
0784デフォルトの名無しさん
2008/06/29(日) 11:54:38なるほど。
0785デフォルトの名無しさん
2008/07/12(土) 18:13:030786デフォルトの名無しさん
2008/07/12(土) 19:51:50貴様!小括弧派の回し者か!
0787デフォルトの名無しさん
2008/07/13(日) 00:37:040788デフォルトの名無しさん
2008/07/13(日) 11:28:450789デフォルトの名無しさん
2008/07/13(日) 12:55:37鉄の絆・・・
0790デフォルトの名無しさん
2008/07/18(金) 13:18:31色々あるんだなぁ
0791デフォルトの名無しさん
2008/07/18(金) 19:09:33確かPython製
0792デフォルトの名無しさん
2008/07/18(金) 19:34:240793デフォルトの名無しさん
2008/07/18(金) 19:44:560794デフォルトの名無しさん
2008/07/18(金) 20:56:05makeはバイナリであるね・・・
0795デフォルトの名無しさん
2008/07/18(金) 22:15:32実行することをmakeと呼んでいる状況に遭遇した不運な香具師は
いる?
0796デフォルトの名無しさん
2008/07/19(土) 03:09:350797デフォルトの名無しさん
2008/07/19(土) 10:14:47runhaskell build
runhaskell install
0798デフォルトの名無しさん
2008/07/19(土) 13:31:31?
ビルドに明確な定義があるか?
コンパイルとかリンクとは根本的に違うだろ
0799デフォルトの名無しさん
2008/07/19(土) 16:29:51ビルドと呼ぶのは、とても正しい気がする。
0800デフォルトの名無しさん
2008/07/19(土) 19:10:120801デフォルトの名無しさん
2008/07/19(土) 19:34:45python setup.py --build
python setup.py --install
0802デフォルトの名無しさん
2008/07/26(土) 11:34:590803751
2008/08/14(木) 11:45:37いいのかよそれで
0804デフォルトの名無しさん
2008/08/14(木) 20:50:540805751
2008/08/14(木) 21:56:590806デフォルトの名無しさん
2008/08/14(木) 22:10:58>>754で報告したと書いてあるんだな。
0807デフォルトの名無しさん
2008/08/15(金) 12:02:490808デフォルトの名無しさん
2008/09/13(土) 11:14:31rakeやsconsのscheme, common lisp版みたいなの
なかったら自分で作りたいぐらいに欲しいのですが、もうあるよというならば情報おねがいします
0809デフォルトの名無しさん
2008/09/13(土) 17:24:020810デフォルトの名無しさん
2008/09/13(土) 22:09:530811デフォルトの名無しさん
2008/09/13(土) 22:12:55alias kachi "make"
0812デフォルトの名無しさん
2008/09/13(土) 23:38:44俺は2ちゃんなどの掲示板の書き込みなら文末の句点は省略されてても気にしないがな。
それより適当な位置で改行し、適度に読点を入れて欲しい。
0813デフォルトの名無しさん
2008/09/13(土) 23:46:100814デフォルトの名無しさん
2008/09/15(月) 00:54:31つ DEFSYSTEM, ASDF
0815デフォルトの名無しさん
2008/11/08(土) 19:25:09以下の実装で以前は動いていたんですが、最近
--------------------------------------------------------
%.obj: %.cpp
@echo $<
@if [ ! -d dotDep ]; then mkdir dotDep; fi
@$(CC) $(CFLAGS) /showIncludes /TP /c /Fo$@ $< > dotDep/$*.d0 \
|| ( $(SED) -e '1{/$</d;}; /^Note: including file:/d' dotDep/$*.d0; exit 1)
@$(SED) -e '1{/$</d;}' \
-e '/^Note: including file:/d' dotDep/$*.d0
@(echo '$@: \' \
&& $(SED) -ne '/^Note: including file:/ { \
s|\\|/|g; \
s/^Note: including file:[ ]*//; \
s/$$/ \\/; \
s|^\(.\):| /cygdrive/\1|; \
p; \
}' dotDep/$*.d0 \
&& src=`$(SED) -ne '/^#line 1 /{s/.*"\([^"][^"]*\)".*/\1/; h;}' \
-e '8{x;p;q;}; $${x;p;q;}' $<`; \
&& echo "$${src:-$<}") > dotDep/$*.d1
@mv dotDep/$*.d1 dotDep/$*.d
------------------------------------------------------------------
/bin/sh: -c: line 10: syntax error near unexpected token `&&'
/bin/sh: -c: line 10: ` && echo "${src:-game.cpp}") > dotDep/game.d1'
実行すると上記のエラーになります。
どこが間違ってるのでしょう?
0816デフォルトの名無しさん
2008/11/08(土) 20:10:440817デフォルトの名無しさん
2008/11/10(月) 12:59:43改行文字はどうなっている?
0818デフォルトの名無しさん
2008/11/16(日) 01:17:43でためしても同じエラーが出る
構文かな?
0819デフォルトの名無しさん
2008/11/16(日) 01:26:17$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-cygwin
$ uname -a
CYGWIN_NT-5.1 achernar 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
0820デフォルトの名無しさん
2008/11/16(日) 01:28:220821デフォルトの名無しさん
2008/11/16(日) 09:27:14make -nでコマンド行をプリントさせて、
それをshで実行してみる。そしてデバッグ。
0822デフォルトの名無しさん
2008/11/17(月) 17:25:51例:
main/sub1/ソース
sub2/ソース
sub3/ソース
main.dll <-sub1,2,3からこの階層へdllを生成
0823デフォルトの名無しさん
2008/11/17(月) 18:09:07sub1、sub2、sub3のMakefileでオブジェクト生成、mainのMakefileでそれらのmakeの起動とライブラリ化でいいんじゃね?
0824デフォルトの名無しさん
2008/11/26(水) 02:41:36コンパイルオプションがバラバラならば>>823のようにするが、
一緒ならば単純に以下のようにする。
SRCS= ¥
main/sub1/ソース.c
sub2/ソース.c
sub3/ソース.c
vpathは使わない。
0825デフォルトの名無しさん
2008/11/26(水) 02:42:36¥ がぬけてた。
SRCS= ¥
main/sub1/ソース.c ¥
sub2/ソース.c ¥
sub3/ソース.c ¥
0826デフォルトの名無しさん
2008/12/11(木) 05:37:06#-------------------------------------- リンカ(GUI)
linkexe = $(linkopt) -Tpe -aa
#-------------------------------------- リンカ(CONSOLE)
linkcon = $(linkopt) -Tpe -ap
#-------------------------------------- リンカ(DLL)
linkdll = $(linkopt) -Tpd -aa
linkconとlinkdllのマクロが使用されている箇所が、
この行以下にはありません。
しかし、linkconとlinkdllの記載を削除すると、リンク時にエラーが出ます。
$(name)T.EXE: FOO1.OBJ $(sobj) $(name)T.RES
$(linkexe) @&&|
$(C0GUI) FOO1 $(sobj)
$(linkout)$.
!if $(UseBCC)
$&
$(DebugLib) NOEH32 IMPORT32 CW32
!endif
$&.RES
|
質問
�@リンクエラーでは、 $(linkexe) @&&| という部分に関係がしていると思われるのですが、
@&&| の意味が分かりません。この意味について教えて頂けませんでしょうか。
または参考になるサイトがあれば、そちらを教えて頂きたいです。
�A$(linkout)$.
$. の意味も分かりません。
0827デフォルトの名無しさん
2008/12/11(木) 09:32:40&&|から行頭|までがファイルに書き出されてファイル名が渡されるはず。
リンカのコマンドラインオプションに@ファイル名ってのがあるでしょ。
$.は実際に.silentとか削ってみてみれば見当つくんじゃないの。知らないけど。
0828826
2008/12/11(木) 22:13:03ご回答ありがとうございます。
しかし、linkconとlinkdllの記載を消すと、
何故エラーが出るかがまだ理解できていません。
linkconとlinkdllは定義されているだけで、
どこでも使われていない感じなのです。
0829デフォルトの名無しさん
2008/12/12(金) 02:27:37-p とか見てみたら?
0830デフォルトの名無しさん
2008/12/13(土) 04:51:52最初から用意されている $(CProgram )
とかじゃなくて、自分で g++ ほげほげ
と書きたいんだけど、どうやったらいいのでしょう?
Windows 環境だと、Visual C++ の cl.exe が $(CProgram )
に設定されているみたいなんですよね。
mingw の g++ が使いたい。
0831デフォルトの名無しさん
2008/12/13(土) 06:08:51簡単には答えられないし、いくつもの答えがありううので、>1 に紹介されているサイトで勉強した上で、分からないところを質問してくれると、より具体的な返答があると思うよ。
0832デフォルトの名無しさん
2008/12/13(土) 07:36:25>1 では OMake は触れていないような。
0833デフォルトの名無しさん
2008/12/13(土) 17:21:27makefileの「コマンド行」では(マクロ)変数の代入は行えないんでしょ
うか? 行っても反映されないようですが。
0834デフォルトの名無しさん
2008/12/14(日) 01:29:51世の中にそれを行えるmakeがないかどうかは分かりませんが、
普通は行えないと思いますよ。
やっても反映されないとのことですが、コマンドは子プロセスのシェルで
実行されるので、Makefileの変数にはなんの影響もないはず。
0835デフォルトの名無しさん
2008/12/14(日) 02:51:39ところで、make all CC=gcc みたいな話ではないのかな?
0836デフォルトの名無しさん
2008/12/14(日) 09:50:36依存関係をmakeの起動時に静的に決定するために、
それは出来ません。
0837デフォルトの名無しさん
2008/12/14(日) 11:56:27target: CC=gcc
みたいなことも可能。
0838デフォルトの名無しさん
2009/03/10(火) 23:27:37なんとなくって感じでシンプル、エレガントに書けないです。
とりあえずオライリーで体系的に勉強しようと思ったのですが
どちらから読むのがお奨めですか。
ttp://www.amazon.co.jp/make-改訂版-アンドリュー-オラム/dp/4900900605/ref=pd_sim_b_3_img
ttp://www.amazon.co.jp/GNU-Make-ロバート-メクレンバーグ/dp/4873112699/ref=pd_sim_b_2_img
0839デフォルトの名無しさん
2009/03/13(金) 00:49:10その本は両方読んだけど…
make: わかりやすいが、gmakeに特化していない分、他のmakeのポータビリティを
求めないなら要らない内容が多く、より便利な(ポータブルでない)内容が少ない。
GNUmake: gmake固有の便利機能や高度な使用法はいろいろ書いてあるが、いまいち
散漫な内容で網羅的でない。読後にリファレンスとしても使いにくい。
って感じ。
まぁ一つ言えることは、無理に全部makeで処理しようとしないことか?
普通にcソースをコンパイルしてリンクして…って部分はmakeにやらせてもいいが、
他の独自の複雑な処理は、よほど再ビルドに時間がかかるのでなければ、
シェルスクリプトで書いて、ビルドするたびゼロから作り直すように
割り切ってしまう方が作るのもメンテするのも楽だよ…。
0840デフォルトの名無しさん
2009/03/17(火) 08:57:03スクリプトを書く機会が増えてるな・・・
0841デフォルトの名無しさん
2009/04/29(水) 06:55:00Core2系とOpteron系のマシンがあるのですが、コンパイル時に
それぞれのマシンに合わせてオプションを変えたいのですが、
どのようにマシンを判別すればよいのでしょうか?
0842デフォルトの名無しさん
2009/04/29(水) 09:31:220843デフォルトの名無しさん
2009/04/29(水) 17:53:060844デフォルトの名無しさん
2009/04/29(水) 20:41:510845デフォルトの名無しさん
2009/04/30(木) 09:45:36-axOWPTQみたいなオプションじゃダメなんか?
0846デフォルトの名無しさん
2009/04/30(木) 23:35:530847デフォルトの名無しさん
2009/05/10(日) 18:04:31> -e '8{x;p;q;}; $${x;p;q;}' $<`; \
> && echo "$${src:-$<}") > dotDep/$*.d1
前の行の最後のセミコロンが余計
0848デフォルトの名無しさん
2009/06/01(月) 11:17:55make hogeとやった時にターゲットではなく
hogeという名称のファイルに対して処理をさせたい場合
どのように記述すれば良いのでしょうか
環境はGNU make 3.81です
0849デフォルトの名無しさん
2009/06/02(火) 01:05:55とエイリアスをはるか、諦めてくれ
0850849
2009/06/02(火) 01:15:40hoge: hoge
(ターゲット): (ファイル名)
0851デフォルトの名無しさん
2009/06/02(火) 10:37:04結局環境変数を使う方法でうまくいきました
OREORE ?= defaultvalue
main:
$(OREORE)使用コード
0852デフォルトの名無しさん
2009/06/02(火) 15:34:15まぁ解決したならいいけど
0853デフォルトの名無しさん
2009/08/10(月) 21:49:340854デフォルトの名無しさん
2009/08/11(火) 00:57:43なぜa.oが生成されないのでしょうか?
#中間ファイル
.INTERMEDIATE: ./sub/src/a.c
a.elf : ./sub/obj/a.o ./sub/obj/b.o
cat $+ > $@
#./xxx/src/.c -> ./xxx/obj/.o
%.o : $(addsuffix /%.c, ../src)
cp $< $@
./sub/obj/a.o : ./sub/src/a.c
./sub/obj/b.o : ./sub/src/b.c
#./xxx/blk/*.lst -> ./xxx/blk/*.c
./sub/src/a.c : ./sub/blk/a.lst
cp $< $@
0855デフォルトの名無しさん
2009/09/04(金) 23:28:46http://anchorage.2ch.net/test/read.cgi/bizplus/1252031294/
0856デフォルトの名無しさん
2009/09/23(水) 04:13:38それにあわせて、コンパイラやコンパイルオプションを変更する方法を教えてください。
0857デフォルトの名無しさん
2009/09/23(水) 04:23:49簡単なのは arch とか uname の出力を見て(やり方はMakeの種類
ごとに異なる)条件判断の上変数をセットする。
本格的にやるなら GNU autotools というバッドノウハウの塊を使う。
0859856
2009/09/23(水) 06:55:56OS = $(shell uname -s)
と最初に書いたのですが、nmakeで旨く通りません。
0860デフォルトの名無しさん
2009/09/23(水) 10:52:15echo set CC=cl > compile.bat
echo set CFLAGS=xxxx >> compile.bat
echo nmake -f main.nmk >> compile.bat
echo export CC=gcc > compile
echo make -f main.mk >> compile
!chmod a+x compile
./compile
0861デフォルトの名無しさん
2009/09/23(水) 11:23:450862デフォルトの名無しさん
2009/09/23(水) 11:52:00nmakeって $(shell ...) 使えるん?
0863デフォルトの名無しさん
2009/09/23(水) 12:17:260864デフォルトの名無しさん
2009/09/24(木) 17:51:040865デフォルトの名無しさん
2009/09/26(土) 20:39:32Windows_NT
0866デフォルトの名無しさん
2009/09/29(火) 11:30:35$(MAKE) -C absolutepath
Makefileからカレントの下層ではないフォルダにあるMakefileを呼び出したいと思っています。
しかし、subsystemで指定したフォルダの中にあるMakefileだけが実行されて、subsystemの記述より下に書いてあるコマンドが実行されなくなってしまいます。
どうすればいいのでしょうか?
0867デフォルトの名無しさん
2009/09/29(火) 11:33:38それだけ読むと「subsystemの記述より下に書いてあるコマンド」が実行されるのに十分な
指定をしてるのかどうかわからん。
どんな Makefile を書いてどんなコマンドラインで実行したときに、そのコマンドが実行される
ことを期待しているの?
0868デフォルトの名無しさん
2009/09/29(火) 12:45:40まずsubsystemでlibを作成します。
次に「subsystemの記述より下に書いてあるコマンド」ですが、libへのリンクを含むビルドです。
どちらも別々に実行すればうまくいきます。
0869デフォルトの名無しさん
2009/09/29(火) 12:46:550870デフォルトの名無しさん
2009/09/29(火) 12:48:050871デフォルトの名無しさん
2009/09/29(火) 14:56:30compiler = dmd
flag = -g -unittest
subsystem:
$(MAKE) -C C:\hoge\fuga\mylib
foo: foo.d
$(compiler) $(flag) mylib.lib $<
0872デフォルトの名無しさん
2009/09/29(火) 15:03:560873デフォルトの名無しさん
2009/09/29(火) 15:38:39-fで指定するというのは、make実行時?それともsubsystemの中でしょうか?
また、そこでどっちのファイル名を指定すればいいのかも分かりません。
Makefileのファイル名は2つともMakefileなので、-fで指定する必要はないと思うのですが。
0874デフォルトの名無しさん
2009/09/30(水) 02:12:18make -n subsystem
の出力は?
0875デフォルトの名無しさん
2009/09/30(水) 04:40:30それが Makefile 全体ってことでいいの?
で、コマンドラインは?
実行したときに表示されるメッセージは?
0876デフォルトの名無しさん
2009/09/30(水) 07:07:04fooをビルドするためのMakefileはこれで全部です。
make -C C:\hoge\fuga\mylib
make[1]: Entering directory `C:\hoge\fuga\mylib'
/* ここでC:\hoge\fuga\mylib\Makefileが期待通りに実行される */
make[1]: Leaving directory `C:\hoge\fuga\mylib'
というメッセージが出て、C:\hoge\fuga\mylib\Makefileで期待した通り、
mylib.libは作成されますが、fooに関しては何も実行されません。
1つ勘違いしていたのですが、subsystemは予約語のような物ではないんですね。
しかし、mylib.libに変えてみても結果はかわらず・・・。
>>874
-nを付けないでやった時と同じ出力になりました。
0877876
2009/09/30(水) 07:09:42Makefileの実行は、コマンドプロンプトでカレントディレクトリをfoo.dがあるフォルダに変えたあと、
make
と打ちました。
0878デフォルトの名無しさん
2009/09/30(水) 11:41:27ゴールを指定してないときは、一番最初に見つかったルールのターゲットがゴールとされる。
その結果で仕様どおり。
0879デフォルトの名無しさん
2009/09/30(水) 13:37:34いやいや、元のMakefileがあるところで
make subsystem
とやって欲しかったんだけど
0880デフォルトの名無しさん
2009/09/30(水) 13:57:39つまり>>871のsubsystemとfooの順番を入れ替えるということですよね?
これも試してはみたんですが、今度はfooが作成されてmylib.libが作成されなくなってしまいます。
C:\hoge\fuga\mylib\Makefileを単独で直接実行すればmylib.libが作成されるんですが謎です。
また、fooのMakefileのカレントで>>879を実行すると、mylib.libが作成されてfooが作成されません。
0881デフォルトの名無しさん
2009/09/30(水) 14:03:510882デフォルトの名無しさん
2009/09/30(水) 14:11:09http://www.google.co.jp/search?q=%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1
http://www.ecoop.net/coop/translated/GNUMake3.77/make_9.jp.html#SEC83
0883デフォルトの名無しさん
2009/09/30(水) 14:13:49ゴールが必要なのだよゴールが。
0884デフォルトの名無しさん
2009/09/30(水) 14:14:500885デフォルトの名無しさん
2009/09/30(水) 14:18:530886デフォルトの名無しさん
2009/09/30(水) 14:35:05「ゴール」が用語だとは思いませんでした。
複数のターゲットをゴールにする事ができるんですね。
今気づいた事なのですが、単純に依存の書き忘れでした。
foo: foo.d
$(compiler) $(flag) mylib.lib $<
を
foo: foo.d mylib.lib
$(compiler) $(flag) mylib.lib $<
に変えたらうまくいきました。
どうもありがとうございました。
0887デフォルトの名無しさん
2009/09/30(水) 15:17:35> subsystemの記述より下に書いてあるコマンド
って
$(MAKE) -C absolutepath
じゃなかったんだな。。
0888デフォルトの名無しさん
2009/09/30(水) 15:43:300889デフォルトの名無しさん
2009/10/03(土) 09:27:492回目以降のビルドの時、更新されたソースのみコンパイルされるようになりますよね。
更新されたソースを検知する仕組みってどうなっているんですか?
0890デフォルトの名無しさん
2009/10/03(土) 13:05:43その両者のタイムスタンプを比べれば、*.oが生成された後に*.cが修正されたかどうか判るべ?
0891デフォルトの名無しさん
2009/10/03(土) 14:42:28なるほど。
となるとcleanでオブジェクトファイル消したら意味なくなっちゃいますね。
0892デフォルトの名無しさん
2009/10/03(土) 15:03:130893デフォルトの名無しさん
2009/10/03(土) 18:40:580894デフォルトの名無しさん
2009/10/04(日) 16:00:44Makefileを2つ書くのは保守が面倒だし、上手い方法はないでしょうか?
0895デフォルトの名無しさん
2009/10/04(日) 16:12:27生成物を置くディレクトリをリリース用、デバッグ用で分ける。
make起動時にモードを変数で指定(無指定ならデバッグモードになる、とかも)
コンパイルフラグや生成物のパスを記述するときにその変数の値を考慮する。
0896デフォルトの名無しさん
2009/10/04(日) 16:13:14リリース用のオブジェクトとデバッグ用のオブジェクトをわけておけば問題ないはず。
0897デフォルトの名無しさん
2009/10/04(日) 16:41:230898デフォルトの名無しさん
2009/10/04(日) 17:17:32>>895,896
いずれにしても、make起動時に引数で渡して、パスやらファイル名を変えると言う事ですね。
>>897
ビルドツールは便利ですね。
でも、わけあって使えないんです><
0899デフォルトの名無しさん
2009/10/04(日) 18:31:36> いずれにしても、make起動時に引数で渡して、パスやらファイル名を変えると言う事ですね。
なんか誤解してないか?
確かに起動時に引数を渡して切り替えるんだが、 make PATH=./debug じゃなくて、
make debug とかそういう切り替え方法だぞ。
0900デフォルトの名無しさん
2009/10/04(日) 21:08:54make起動時に渡すのはマクロではなく、ターゲットと言う事ですか?
こうする事によるメリットとは何ですか?
0901900
2009/10/04(日) 21:18:070902デフォルトの名無しさん
2009/10/04(日) 21:27:20> こうする事によるメリットとは何ですか?
指定が簡単で >894 のような問題が起こらない。
あと make に「マクロ」なんてものは無い。たぶん「変数」のことなんだろうけど。
0903デフォルトの名無しさん
2009/10/04(日) 21:35:52え
0904デフォルトの名無しさん
2009/10/04(日) 22:00:33> (In some other versions of make, variables are called macros.)
0905デフォルトの名無しさん
2009/10/04(日) 23:38:43make MODE=debug として中で条件で設定を変える。
0906デフォルトの名無しさん
2009/10/05(月) 05:50:30ターゲットで指定する方法
make debug
マクロで指定する方法
make MODE = debug
ということですよね。
私は後者を考えていました。
0907デフォルトの名無しさん
2009/10/06(火) 23:42:14makeでwarning時の処理を書きたいと思い以下のようなコードを書いています。
hoge.exe:hoge.c
$(CC) $(CFLAGS) hoge.c 2>&1 | grep warning && (warning時の処理)
このコードでwarningが出たときの処理はうまく動くのですが、逆にwarningがでなかったとき
grepがアンマッチで1を返すことによって、なぜかmakeの処理自体がエラーとしてexitしてしまいます。
grepがアンマッチの場合でもmakeの処理を継続させるにはどのように書けばよいでしょうか?
宜しくお願いします。
0908デフォルトの名無しさん
2009/10/06(火) 23:50:54として前のコマンドが0以外を返したときフォローで0を返すか、
その行のアタマ(TABの次)に - を付けて失敗を無視させる。
0909デフォルトの名無しさん
2009/10/07(水) 12:14:56このターゲットと依存はサフィックスルールで簡単にかけますよね。
hoge.o: fuga\hoge.c
では、これはサフィックスルールで書く方法ありますか?
0910デフォルトの名無しさん
2009/10/07(水) 12:36:59サフィックスルールよりも広く使える、パターンルールを使う。
%.o : fuga/%.c
0911デフォルトの名無しさん
2009/10/07(水) 12:50:01thx
これは便利。
0912デフォルトの名無しさん
2009/10/07(水) 13:40:29all: fuga\hoge.o
//省略
fuga\hoge.o: hoge.c
//省略
をパターンルールで書くにはどうすればいいのでしょうか?
0913デフォルトの名無しさん
2009/10/07(水) 13:42:23応用しろよ。アホか。
0914デフォルトの名無しさん
2009/10/07(水) 13:49:32考えてはみたんですけど
all: fuga\hoge.o
によって%はfuga\hogeになりますよね。
この%をhoge.cに変える方法が分からないです。
0915デフォルトの名無しさん
2009/10/07(水) 13:54:36> all: fuga\hoge.o
> によって%はfuga\hogeになりますよね。
は?なんでそうなるの?
とりあえずググレカス
http://lmgtfy.com/?q=%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AB
0916デフォルトの名無しさん
2009/10/07(水) 14:12:11君はどうなると思ったの?
0917デフォルトの名無しさん
2009/10/07(水) 14:20:45910 を見て少し考えればわかるだろうと思った。
0918デフォルトの名無しさん
2009/10/07(水) 14:33:22答えになってないな。
%にディレクトリを含むパスが渡されるのはあってる。
0919デフォルトの名無しさん
2009/10/07(水) 17:16:21ofiles=$(cfiles:.c=.o)
all: ofiles
でいいんじゃねえの?
GNU make以外で通用するかは知らんが
0920デフォルトの名無しさん
2009/10/07(水) 19:56:43thx
ワイルドカードを使う方法でできました。
0921920
2009/10/07(水) 21:00:35これだとソースをまとめてコンパイルする方法になっていて、
ソースを1つずつコンパイルして再コンパイルを最小にする最初の目的とは別物でした。
うーん、これ無理なのかな・・・。
0922デフォルトの名無しさん
2009/10/08(木) 01:26:09とりあえずマニュアル読んで、書いてみた Makefile 見せてくれ。
0923デフォルトの名無しさん
2009/10/08(木) 17:52:04#方法1
all: fuga\hoge.o
#省略
fuga\%.o: %.c
#省略
#方法2
all: fuga\hoge.o
#省略
%.o: $(notdir %.c)
#省略
どちらも
*** No rule to make target `fuga\hoge.c', needed by `fuga\hoge.o'. Stop.
というエラーになります。
0924デフォルトの名無しさん
2009/10/08(木) 19:46:44fuga\%.o: %.c
$(CC) $(CFLAGS) -c &< -o $@
0925デフォルトの名無しさん
2009/10/09(金) 01:05:40方法1でだいたい正解なんだが、結果が妙だね。
方法1をコピペした Makefile で make を走らせると、こうなる。
make: *** No rule to make target `fuga\hoge.o', needed by `all'. Stop.
ちょっとちがうね。
ちなみに
$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-cygwin
で、 \ を / に置き換えて fuga/%.o のルールにコマンド部分書き足して、
hoge.c をカレントディレクトリに置いてやると、普通に成功する。
何が起こってるか調べたいなら make -d -r してみるといいかもしれない。
0926デフォルトの名無しさん
2009/10/09(金) 10:54:20hoge:
prompt hoge
.PHONY: fuga
fuga:
prompt fuga
.PHONY: piyo
piyo:
prompt piyo
hogeしか実行されません。
3つ実行するにはどうすればいいですか?
0927デフォルトの名無しさん
2009/10/09(金) 11:43:16引数なしで実行すると最初に見つけたターゲットだけ実行するから、
どのターゲットよりも前に
all: hoge fuga piyo
と書く、でいいんじゃね?
0928デフォルトの名無しさん
2009/10/09(金) 12:14:44どうもです。
うまくいきました。
0929デフォルトの名無しさん
2009/10/09(金) 19:43:30すみませんエラーを写し間違えていました。
> make: *** No rule to make target `fuga\hoge.o', needed by `all'. Stop.
このエラーでした。
そして\を/に変えたらエラーはでなくなりました。
ありがとうございました。。
0930デフォルトの名無しさん
2009/10/24(土) 07:36:43gnu makeで
.cpp.obj:
$(CC) -c $<
hoge.obj: hoge.h
とすると、
make: Nothing to be done for `hoge.obj'
と出てしまいます。
.cpp.o:
$(CC) -c $<
hoge.o: hoge.h
と書くと、コンパイルはされます。(生成されるのはhoge.objですが)
.cpp.obj:
$(CC) -c $<
hoge.obj: hoge.h
でも、nmakeならコンパイルされます。
なぜgnu makeでobjと書くとうまくいかないのでしょうか?
.
0931デフォルトの名無しさん
2009/10/24(土) 11:12:47.SUFFIXES: .obj
0932デフォルトの名無しさん
2009/10/24(土) 19:59:28変にサフィックスルールを使おうとしてうまくいってない感じだね。
ちょっと前に出てるパターンルールで書いたほうがいいよ。
0933デフォルトの名無しさん
2009/11/02(月) 04:49:57アニラジをwavで録音して番組毎に分割した後、
全部をoggに変換してタグ付けして
Winampのメディアライブラリ管理フォルダに移して
元のwav消去まですんのすんげー怠かったけど
メイクのお陰で後者の行程全自動化した
うはwwwwww空いた時間でコーヒー呑むwwwwww
0934デフォルトの名無しさん
2009/11/02(月) 11:32:23すなおにおめでとうと言いたい。
0935デフォルトの名無しさん
2009/11/02(月) 11:37:18じゃあ漏れは動画のダウンローダーを作ってみる
0936デフォルトの名無しさん
2009/11/02(月) 12:52:19PCに取り込んだ後に整理するのが面倒なので、新しいものだけ内部タグのタイムスタンプに戻す処理をmakeでやっている。
時限処理ならタスクでいいけど、タイムスタンプを比較するときは(色色融通が利かなくても)makeがいいね。
0937デフォルトの名無しさん
2009/11/02(月) 19:30:31よくやったwwww
pythonやらrubyやらのLL言語をやるともっと幸せになれると思うが。
0938デフォルトの名無しさん
2009/11/03(火) 04:40:490939デフォルトの名無しさん
2009/11/03(火) 05:32:320940デフォルトの名無しさん
2009/11/03(火) 05:40:570941デフォルトの名無しさん
2009/11/03(火) 12:20:59時間因果関係依存ファイル操作
0942デフォルトの名無しさん
2009/11/04(水) 13:48:32makeで作ることも出来るかもしれんな
0943デフォルトの名無しさん
2009/11/05(木) 02:48:15+ makes
+ many
= problems
覆面算をmakeで解いてください
0944デフォルトの名無しさん
2009/11/05(木) 07:42:060945デフォルトの名無しさん
2009/11/15(日) 00:33:08例えばカレントフォルダの中にhogeフォルダとfugaフォルダがあるとして、両フォルダの中のファイル名の一覧を取得しようと思うと
src = $(wildcard hoge/*.c) $(wildcard fuga/*.c)
のようにフォルダ毎にwildcardで取得する方法が思いつきますが、1回のwildcardで取得する方法はないでしょうか?
0946デフォルトの名無しさん
2009/11/15(日) 05:03:41GNU makeだっけ?
$(wildcard hoge/*.c fuga/*.c)
とかいう話?
infoによると {hoge,huga}/*.c は不可のようだが。
0947デフォルトの名無しさん
2009/11/15(日) 06:13:340948デフォルトの名無しさん
2009/11/17(火) 15:08:16>>946
フォルダを入力しないといけないのが面倒くさいんですよね。保守の面でも。
>>947
*を何回も使えるのは知りませんでした。
しかし、カレントフォルダの下位フォルダも含めて.cファイルを全部取ろうとすると
$(wildcard *.c */*.c */*/*.c */*/*/*.c)
のように階層の深さだけ書かないといけないのがちょっと不満です。
一発で綺麗に書く方法はないんでしょうか?
0949デフォルトの名無しさん
2009/11/17(火) 15:28:290950デフォルトの名無しさん
2009/11/17(火) 17:03:44make自体の機能にはないんですね。
ありそうでないんだなぁ。
0951デフォルトの名無しさん
2009/11/18(水) 11:38:22考え方が逆。Unix系はいろんなツールを組み合わせて使うのが常道だから、外部ツールを使えばいいだけ。
0952デフォルトの名無しさん
2009/11/21(土) 17:21:040953デフォルトの名無しさん
2009/11/21(土) 21:27:240954デフォルトの名無しさん
2009/11/21(土) 21:37:550955デフォルトの名無しさん
2009/11/21(土) 22:12:430956デフォルトの名無しさん
2009/11/26(木) 10:08:53hoge.o: hogr.h
と書いてhoge.cppが変更された場合でもコンパイルされる理由がわかりません。
0957デフォルトの名無しさん
2009/11/26(木) 10:16:53いえ、コンパイルされませんよ
0958デフォルトの名無しさん
2009/11/26(木) 10:25:38.hの依存を無視するなら、Makefile無しでもコンパイルできる。
$ ls
hoge.c
$ make hoge.o
cc -O2 -pipe -std=gnu99 -fstack-protector -c hoge.c
0959デフォルトの名無しさん
2009/11/26(木) 10:26:430960デフォルトの名無しさん
2009/11/26(木) 12:19:350961デフォルトの名無しさん
2010/01/07(木) 05:26:19もしそうでないなら、clをつかうようにしたいのですが、Makefileはどのように書けばよいのでしょうか?
0962デフォルトの名無しさん
2010/01/07(木) 10:00:410963デフォルトの名無しさん
2010/01/07(木) 11:07:56!if [インテルコンパイラの存在確認] == 0
CC=icl
!else
CC=cl
!endif
!ifの条件式中でコマンドを[]で囲むとexit codeに置換される。
0964デフォルトの名無しさん
2010/01/07(木) 11:20:20早速の返信ありがとうございます。
インテルコンパイラの存在確認の部分がわからないのですが。
Windowsの場合どのように確認するのでしょうか?
0965デフォルトの名無しさん
2010/01/07(木) 11:30:56iclがインストールされると設定されるであろう環境変数を調べるスクリプトを書く。
アプリケーションのインストール情報読むスクリプトを書く。
インストールディレクトリ決め打ちで存在確認するバッチファイルを書く。
好きなのをどうぞ。
0966デフォルトの名無しさん
2010/01/07(木) 12:16:330967デフォルトの名無しさん
2010/01/07(木) 14:54:500968デフォルトの名無しさん
2010/01/08(金) 02:34:250969デフォルトの名無しさん
2010/01/08(金) 12:43:48あたりで十分だろ。
まさか95とかMEなのでcmd.exeじゃありませんとか言わんよな。
0970デフォルトの名無しさん
2010/01/08(金) 12:52:17!if [for %I in (icl.exe) do @if "%~$$PATH:I" == "" exit 1] == 0
というのも思いついた。
この例だとメリットないと思うが、-helpみたいな何もしないで正常終了させる
オプションがないコマンドを調べるのには使えるかも。
0971デフォルトの名無しさん
2010/01/08(金) 14:11:180972デフォルトの名無しさん
2010/01/08(金) 17:54:21ちなみに、Linux版はインストールしても環境変数設定スクリプトが着いてくるだけ。
0973デフォルトの名無しさん
2010/01/09(土) 08:18:530974デフォルトの名無しさん
2010/01/09(土) 09:47:33手抜きならインストールパス決め打ち。
0975デフォルトの名無しさん
2010/01/09(土) 10:23:380976デフォルトの名無しさん
2010/01/09(土) 10:27:26理由: わざわざインストールしないで済む。
0977デフォルトの名無しさん
2010/01/09(土) 12:07:29マイナーすぎてわからないので書いてください
0978デフォルトの名無しさん
2010/01/09(土) 12:19:570979デフォルトの名無しさん
2010/01/10(日) 23:28:03WindowsでMinGWを使ってるはずなのになぜ-I/usr/X11R6/includeをインクルードしてるんでしょうか・・
freetype.aをリンクさせるため、Makefileの46行目を次のように書き換えると、分離記号を欠いています出て一切動作しません。
http://etwas.wolfish.org/Irrlicht/irrlichtml.html
# Next variable is for additional scene nodes etc. of customized Irrlicht versions
EXTRAOBJ = freetype.a
LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \
$(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \
$(IRRGUIOBJ) $(ZLIBOBJ) $(JPEGLIBOBJ) $(LIBPNGOBJ) $(EXTRAOBJ)
↓Makefileを書き換えなかった場合(freetypeのincludeは追加した。)
C:\Documents and Settings\ユーザー名\My Documents\Visual Studio 2008\Projects\irrlicht
-1.6\source\Irrlicht>make
cc -fexpensive-optimizations -O3 -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_
NO_MNG_FEATURES -I../../include -Izlib -Ijpeglib -Ilibpng -Ifreetype -I/usr/X11R
6/include -DIRRLICHT_EXPORTS=1 -c -o zlib/adler32.o zlib/adler32.c
process_begin: CreateProcess(NULL, cc -fexpensive-optimizations -O3 -DPNG_THREAD
_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES -I../../include -Izlib -Ijpeg
lib -Ilibpng -Ifreetype -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1 -c -o zlib/adl
er32.o zlib/adler32.c, ...) failed.
make (e=2): 指定されたファイルが見つかりません。
make: *** [zlib/adler32.o] エラー 2
0980デフォルトの名無しさん
2010/01/11(月) 07:54:10後者のメッセージを見ると、「ccコマンドが見付からない」
って言われているんじゃないか?
0981デフォルトの名無しさん
2010/01/11(月) 09:28:53持って来い。質問はそれからだ。
0982デフォルトの名無しさん
2010/01/11(月) 23:15:15おかしいと思ったのならちょっとくらい Makefile 読もうぜ。
make sharedlib_win32 staticlib_win32
0983デフォルトの名無しさん
2010/01/12(火) 06:08:41nmakeじゃなくてcygwinのmakeを使っています。
0984デフォルトの名無しさん
2010/01/12(火) 06:29:29スレタイが楽しみだわ
0985デフォルトの名無しさん
2010/01/12(火) 07:56:33make組 その2
0986デフォルトの名無しさん
2010/01/12(火) 10:12:41いやああああ
>>60近辺のおされ路線でお願いします
0987デフォルトの名無しさん
2010/01/13(水) 00:57:08レス数が950を超えています。1000を超えると書き込みができなくなります。