アプリケーション開発用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: 410,
today: 1,
yesterday: 1
初版日時: 2009-11-17 (火) 00:00:00
最終更新: 2009-11-17 (火) 00:00:00 (JST) (660d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
|---|---|---|---|---|---|---|
| ぺージ名 : | Makefile_app | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
| ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
| ページ別名 : | 未設定 | |||||
