makefile自动化编译学习


    makefile文件描述源程序之间的相互关系,例如依赖,并自动维护编译工作。makefile 类似于shell脚本按照某种语法进行编写,文件说明如何各个源文件是如何被编译并且连接生成最后的可执行文件,好处就是自动化编译,极好地提高了软件开发的效率,应用非常广泛,以下代码是一些稍微简单的模板,不过已经在很多小项目里够用了:

 
################OPTION###################
CCOMPILE = gcc                      
CPPCOMPILE = g++
COMPILEOPTION = -c
INCLUDEDIR = -I${ORACLE_HOME}/rdbms/public -I${ORACLE_HOME}/precomp/public 
LINK = gcc
LINKOPTION = -o Process
LIBDIRS = -L$(ORACLE_HOME)/lib
OBJS = Process.o Database.o Main.o Func.o
OUTPUT = Process
SHAREDLIB = -lclntsh
APPENDLIB =
PROC_OPTION = DEFINE=_PROC_ MODE=ORACLE
ESQL_OPTION =
################OPTION END################
ESQL = esql
PROC = proc
$(OUTPUT):$(OBJS) $(APPENDLIB)
 $(LINK) $(LINKOPTION) $(LIBDIRS)   $(OBJS) $(SHAREDLIB) $(APPENDLIB)

clean:
 rm -f $(OBJS)
 rm -f $(OUTPUT)
all: clean $(OUTPUT)
.PRECIOUS:%.cpp %.c %.C
.SUFFIXES:
.SUFFIXES:  .c .o  .pc .ec .cc


.c.o:
 $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.c
 
.cc.o:
 $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR)  $*.cpp

.ec.c:
 $(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ec

.pc.c:
 $(PROC)  $(PROC_OPTION)  $*.pc
 

CCOMPILE与CPPCOMPILE变量为编译语言,对应C与C++,COMPILEOPTION为编译的选择项,对应的是要编译的源代码,
INCLUDEDIR为编译所需要引入的头文件,比如库头文件等,这里引用的是ORACLE数据库系统的头文件。
LIBDIRS为编译所需要引入的库文件,
OBJS为编译的目标库文件,OUTPUT为最终的执行程序名称,PROC_OPTION为PROC语言的编译选项,
clean为清除编译出的目标文件,
.c.o为编译生成目标库文件的命令集合
$(OUTPUT)为生成目标执行程序的命令集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值