############### 修改配置 ####################################################################################
# 已修改为C入口
#(建议修改)工程名称,生成的可执行程序名字也是它
Project := lyxml
#(建议修改)版本,无关紧要
Version := 1.0.1
#(建议修改)MinGW的位置,要求MinGW装gcc、make并且将nasm复制到了MinGW/bin中。
Compiler := "F:/Program Files/MinGW"
#(建议修改)该工程的根目录,makefile可以和工程分开
Root := G:/asm/lyxml
#(建议修改)该工程所使用到的静态库
Extern := -lcrtdll -lkernel32 -lwsock32 -lcoldname
#(建议修改)该工程是DEBUG版本还是RELEASE版本
Public := DEBUG
############### 基础配置 ####################################################################################
Bin :=$(Root)/Bin
Src :=$(Root)/Code
Inc :=$(Root)/Include
Lib :=$(Root)/Library
Doc :=$(Root)/Document
Cfg :=$(Root)/Config
Prj :=$(Root)/Project
Tmp :=$(Root)/Temp
ld := $(Compiler)/bin/gcc
ar := $(Compiler)/bin/ar
as := $(Compiler)/bin/nasm
cc := $(Compiler)/bin/gcc
as_define := -d_$(Public)
cc_define := -D$(Public)
ldflags := -L $(Compiler)/lib $(Extern) -O4
asflags := -I $(Inc)/ -fwin32 $(as_define)
arflags := r
cflags := -I $(Inc) -c -pedantic -Wall -Werror $(cc_define)
############### 文件搜索 ####################################################################################
asmfiles := $(shell if exist $(Src)/*.asm dir $(Src)/*.asm /B)
depend_asm := $(asmfiles:%.asm=$(Tmp)//%.oa)
cfiles := $(shell if exist $(Src)/*.c dir $(Src)/*.c /B)
depend_c := $(cfiles:%.c=$(Tmp)//%.oc)
############### 编译规则 ####################################################################################
$(Tmp)//%.oa:$(Src)/%.asm
@$(as) -o $@ $^ $(asflags)
@echo 成功编译了$^
$(Tmp)//%.oc:$(Src)/%.c
@$(cc) -o $@ $^ $(cflags)
@echo 成功编译了$^
############### 自动编译 ####################################################################################
.PHONY:go clean lib build help
$(Bin)/$(Project).exe: $(depend_asm) $(depend_c)
@$(ld) -o $@ $^ $(ldflags)
@echo 成功连接了$@
go:$(Bin)/$(Project).exe
@echo *********以下是运行$(Project)的输出结果*********
@$(Bin)/$(Project).exe
lib:$(Lib)/$(Project).a
@echo 编译完成$^
clean:
@del $(Tmp)/* /q
build:
@if not exist $(Bin) md $(Bin) | echo 创建了$(Bin)目录
@if not exist $(Src) md $(Src) | echo 创建了$(Src)目录
@if not exist $(Inc) md $(Inc) | echo 创建了$(Inc)目录
@if not exist $(Lib) md $(Lib) | echo 创建了$(Lib)目录
@if not exist $(Doc) md $(Doc) | echo 创建了$(Doc)目录
@if not exist $(Cfg) md $(Cfg) | echo 创建了$(Cfg)目录
@if not exist $(Prj) md $(Prj) | echo 创建了$(Prj)目录
@if not exist $(Tmp) md $(Tmp) | echo 创建了$(Tmp)目录
help:
@echo 当前工程目录: $(Root)
@echo 当前工程名称: $(Project)
@echo 重新编译工程: make -B
@echo 清理临时文件: make clear
@echo 创建目录结构: make build
@echo 运行测试程序: make go