アプリケーション開発用Makefile例
- introa12にバンドルする予定のもの
- introa11版はバグがあったり、分割コンパイルにあまり向かなかったりしていた。
win32用 (Linux用?)
- CとASKAの混在にも対応。ライブラリ作成にも対応。DLL作成にも対応。
TARGET = helloc4 STACKSIZE = 4k MALLOCSIZE = 1k MMAREA = 0 OBJS = $(TARGET).obj # 以上5つはソースごとに書き換える # OBJSを書き換えると分割コンパイル対応 TOOLPATH = INCPATH = $(TOOLPATH). RULEFILE = $(TOOLPATH)guigui00.rul DLLRULE = $(TOOLPATH)dllrule0.rul MAKE = $(TOOLPATH)make -r SJISCONV = $(TOOLPATH)sjisconv -s CC1 = $(TOOLPATH)cc1 -I$(INCPATH) -Os -quiet GAS2NASK = $(TOOLPATH)gas2nask -a NASK = $(TOOLPATH)nask OBJ2BIM = $(TOOLPATH)obj2bim3 BIM2BIN = $(TOOLPATH)bim2bin3 CPP0 = $(TOOLPATH)cpp0 -P -I$(INCPATH) ASKA = $(TOOLPATH)aska NASKCNV = $(TOOLPATH)naskcnv0 -l -s -w GOLIB = $(TOOLPATH)golib00w DELE = del # 以上の項目はあなたのディレクトリ構成にあわせて書き換える ALL : $(MAKE) $(TARGET).bin %.ca : %.c Makefile $(SJISCONV) $*.c $*.ca %.gas : %.ca Makefile $(CC1) -o $*.gas $*.ca %.nas : %.gas Makefile $(GAS2NASK) $*.gas $*.nas %.obj : %.nas Makefile $(NASK) $*.nas $*.obj %.ias : %.ask Makefile $(CPP0) -o $*.ias $*.ask %.3as : %.ias Makefile $(ASKA) $*.ias $*.3as %.nas : %.3as Makefile $(NASKCNV) $*.3as $*.nas %.lst : %.nas Makefile $(NASK) $*.nas $*.obj $*.lst $(TARGET).bim : $(OBJS) Makefile $(OBJ2BIM) @$(RULEFILE) out:$(TARGET).bim stack:$(STACKSIZE) map:$(TARGET).map $(OBJS) %.bin : %.bim Makefile $(BIM2BIN) in:$*.bim out:$*.org malloc:$(MALLOCSIZE) mmarea:$(MMAREA) $(BIM2BIN) -osacmp -tek0 in:$*.org out:$*.bin $(TARGET).lib : $(OBJS) Makefile $(GOLIB) out:$(TARGET).lib $(OBJS) $(TARGET).dll : $(OBJS) Makefile $(OBJ2BIM) @$(DLLRULE) out:$(TARGET).bim map:$(TARGET).map $(OBJS) $(BIM2BIN) -osacmp -tek0 in:$(TARGET).bim out:$(TARGET).dll clean : $(DELE) *.obj $(DELE) $(TARGET).bim $(DELE) $(TARGET).map $(DELE) $(TARGET).org
- (註)次の修正を加えるとLinux版になるかもしれない
SJISCONV = cp
CC1 = $(TOOLPATH)gocc1 -I$(INCPATH) -Os -quiet
CPP0 = $(TOOLPATH)gocpp0 -P -I$(INCPATH)
GOLIB = $(TOOLPATH)golib00
DELE = rm -f
Linux用
- (誰か書いてちょ)
- (ひょっとしてdelをrmにするだけでいいのかな?)
- introa11.lzhからintroe01.lzhをまとめてコンパイルするように修正した
お手軽セットはこちら。
introset-a2e
- ざっとしか見てませんが、こんな感じにすれば多少応用が楽になるかも?
Linux用?
TARGET = helloc4 STACKSIZE = 4k MALLOCSIZE = 1k MMAREA = 0 OBJS = $(TARGET).obj # 以上5つはソースごとに書き換える # OBJSを書き換えると分割コンパイル対応
INCPATH = . RULEFILE = guigui00.rul SJISCONV = ln CC1 = gocc1 GAS2NASK = gas2nask NASK = nask OBJ2BIM = obj2bim3 BIM2BIN = bim2bin3 MAKE = make DEL = rm -f # 以上の項目はあなたのディレクトリ構成にあわせて書き換える ALL : $(MAKE) $(TARGET).bin %.ca : %.c Makefile $(SJISCONV) -s $*.c $*.ca %.gas : %.ca Makefile $(CC1) -I$(INCPATH) -Os -quiet -o $*.gas $*.ca %.nas : %.gas Makefile $(GAS2NASK) -a $*.gas $*.nas %.obj : %.nas Makefile $(NASK) $*.nas $*.obj $(TARGET).bim : $(OBJS) Makefile $(OBJ2BIM) @$(RULEFILE) out:$(TARGET).bim stack:$(STACKSIZE) map:$(TARGET).map $(OBJS) %.bin : %.bim Makefile $(BIM2BIN) in:$*.bim out:$*.org malloc:$(MALLOCSIZE) mmarea:$(MMAREA) $(BIM2BIN) in:$*.org out:$*.bin -osacmp -tek0 clean : $(DEL) $(TARGET).map $(DEL) $(TARGET).org $(DEL) $(TARGET).bin
う��ん・・・いまいち。なんか無理に書くほどのことじゃなかったような・・・・(^^;)
Makefileちょっぴり解説コーナー
%.gas : %.ca Makefile $(CC1) -o $*.gas $*.ca
- これは、拡張子.gasのファイルを作るには、同じ名前で拡張子が.caのものとMakefileが必要だよっていう意味で、2行目以降が作り方になっています。$*の部分が、%の部分を引き継ぎます。
- makeは、最初のALL:を実行してmake helloc4.binを認識し、ああ、helloc4.binを何とかして作らなきゃいけないのね、と自分の任務を理解します。
- Makefileには、拡張子.binを作るためには同じ名前で拡張子が.bimのものが必要、と書いてあります。そしてhello4.bimのためにはhelloc4.objが必要、とも書いてあります。・・・こんな感じで自動的にたどっていくわけです。
- それで存在するファイルを見つけることができたら、そこから順番にコマンドを実行して、目的のファイルを作ってくれます。
こめんと欄
- 余談ですが、MakeファイルをWin・UNIX共通にするのは、ある規模よりも大きくなったら、スッパリあきらめるべきでしょうね。私も随分OSASKのMakeファイルをこねくりまわしましたが、結局は必要以上に複雑化してしまい読むのも大変になってしまうだけ。特にUNIX系はテキスト処理に優れているんですから、むしろ単純で読みやすいもののほうが結局手直しが楽って感じですねぇ・・・ -- hideyosi 2003-09-23 (火) 09:18:05
Counter: 189,
today: 2,
yesterday: 2
初版日時: 2009-11-17 (火) 00:00:00
最終更新: 2009-11-17 (火) 00:00:00 (JST) (319d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | Makefile_app | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |