万能Makefile

############### 修改配置 ####################################################################################
# 已修改为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值