.SUFFIXES:.o .c .sqc
ESQL = esql
CC = cc
WORKDIR=$(HOME)
BINDIR=$(WORKDIR)/bin
BNDDIR=$(WORKDIR)/bnd
OBJDIR=$(WORKDIR)/obj/
FLAG=-DDEBUG -fPIC
INCLDIR= -I$(WORKDIR)/include -I$(WORKDIR)/def \
-I$(ORACLE_HOME)/precomp/puplic
CFLAGS= -c -g -DNULL=0 -DUNDEBUG $(FLAG) $(INCLDIR)
#LIBDIR= -L$(WORKDIR)/lib -L$(DB2INSTANCE)/sqllib/lib
#LIB= $(LIBDIR) -ldb2 -lc -lm
OBJ = bcssmain.o
BCSS : $(OBJ)
mv *.o $(OBJDIR)
.sqc.c: ---------------------------这段是什么意思,机器上只有.sqc文件
$(ESQL) $< --------------------------$<是什么意思
.c.o: ---------------------------这段是什么意思,机器上只有.c文件
$(CC) $(CFLAGS) $<
clean :
@rm -f *.c *.i *.o *.err *.lis
请帮忙解释下这段makefile,谢谢了
-
- 帖子: 45
- 注册时间: 2008-01-26 11:26
Re: 请帮忙解释下这段makefile,谢谢了
我重新加了echo方便查看标签的执行顺序
1 .SUFFIXES:.o .c .sqc
2
3 ESQL = esql
4 CC = cc
5
6 WORKDIR=$(HOME)
7 BINDIR=$(WORKDIR)/bin
8 BNDDIR=$(WORKDIR)/bnd
9 OBJDIR=$(WORKDIR)/obj/
10
11 FLAG=-DDEBUG
12
13 INCLDIR= -I$(WORKDIR)/include -I$(WORKDIR)/def \
14 -I$(ORACLE_HOME)/precomp/puplic
15
16
17 CFLAGS= -c -g -DNULL=0 -DUNDEBUG $(FLAG) $(INCLDIR)
18
19 #LIBDIR= -L$(WORKDIR)/lib -L$(DB2INSTANCE)/sqllib/lib
20 #LIB= $(LIBDIR) -ldb2 -lc -lm
21
22 OBJ = bcssmain.o
23
24 BCSS : $(OBJ)
25 echo aaa--------
26 mv *.o $(OBJDIR)
27
28 .sqc.c:
29 echo bbb---------
30 $(ESQL) $<
31
32 .c.o:
33 echo ccc-----------
34 $(CC) $(CFLAGS) $<
35
36 clean :
37 echo ddd------
38 @rm -f *.c *.i *.o *.err *.lis
执行输出是:
[ymcard@ymcard BCSS]$ make
echo bbb---------
bbb---------
esql bcssmain.sqc
proc iname=bcssmain.i oname=bcssmain.c include=/home/ymcard/def include=/home/ymcard/include include=/home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/home/ymcard/include/sys include=/home/ymcard/include/base include=/home/ymcard/include/app sqlcheck=semantic userid=card/card lines=true parse=none def_sqlcode=yes
Pro*C/C++: Release 11.2.0.1.0 - Production on 星期五 9月 21 14:57:54 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
系统默认选项值取自于: /home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
PCC-I-02106, 只有在 SQLCHECK = FULL, 并且用户标识被忽略时才需要使用用户标识。
esql bcssmain.sqc completed!
echo ccc-----------
ccc-----------
cc -c -g -DNULL=0 -DUNDEBUG -DDEBUG -I/home/ymcard/include -I/home/ymcard/def -I/home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/puplic bcssmain.c
bcssmain.i: In function ‘main’:
bcssmain.i:3134: warning: incompatible implicit declaration of built-in function ‘memset’
bcssmain.i:3135: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3177: warning: incompatible implicit declaration of built-in function ‘memcpy’
bcssmain.i:3212: warning: incompatible implicit declaration of built-in function ‘strncpy’
bcssmain.i: In function ‘GetInCodeByOutCode’:
bcssmain.i:3287: warning: incompatible implicit declaration of built-in function ‘memset’
bcssmain.i:3300: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3307: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3311: warning: incompatible implicit declaration of built-in function ‘strcpy’
echo aaa--------
aaa--------
mv *.o /home/ymcard/obj/
rm bcssmain.c
不明白最后的rm是哪里出现的
1 .SUFFIXES:.o .c .sqc
2
3 ESQL = esql
4 CC = cc
5
6 WORKDIR=$(HOME)
7 BINDIR=$(WORKDIR)/bin
8 BNDDIR=$(WORKDIR)/bnd
9 OBJDIR=$(WORKDIR)/obj/
10
11 FLAG=-DDEBUG
12
13 INCLDIR= -I$(WORKDIR)/include -I$(WORKDIR)/def \
14 -I$(ORACLE_HOME)/precomp/puplic
15
16
17 CFLAGS= -c -g -DNULL=0 -DUNDEBUG $(FLAG) $(INCLDIR)
18
19 #LIBDIR= -L$(WORKDIR)/lib -L$(DB2INSTANCE)/sqllib/lib
20 #LIB= $(LIBDIR) -ldb2 -lc -lm
21
22 OBJ = bcssmain.o
23
24 BCSS : $(OBJ)
25 echo aaa--------
26 mv *.o $(OBJDIR)
27
28 .sqc.c:
29 echo bbb---------
30 $(ESQL) $<
31
32 .c.o:
33 echo ccc-----------
34 $(CC) $(CFLAGS) $<
35
36 clean :
37 echo ddd------
38 @rm -f *.c *.i *.o *.err *.lis
执行输出是:
[ymcard@ymcard BCSS]$ make
echo bbb---------
bbb---------
esql bcssmain.sqc
proc iname=bcssmain.i oname=bcssmain.c include=/home/ymcard/def include=/home/ymcard/include include=/home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/home/ymcard/include/sys include=/home/ymcard/include/base include=/home/ymcard/include/app sqlcheck=semantic userid=card/card lines=true parse=none def_sqlcode=yes
Pro*C/C++: Release 11.2.0.1.0 - Production on 星期五 9月 21 14:57:54 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
系统默认选项值取自于: /home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
PCC-I-02106, 只有在 SQLCHECK = FULL, 并且用户标识被忽略时才需要使用用户标识。
esql bcssmain.sqc completed!
echo ccc-----------
ccc-----------
cc -c -g -DNULL=0 -DUNDEBUG -DDEBUG -I/home/ymcard/include -I/home/ymcard/def -I/home/oracle/app/oracle/product/11.2.0/dbhome_1/precomp/puplic bcssmain.c
bcssmain.i: In function ‘main’:
bcssmain.i:3134: warning: incompatible implicit declaration of built-in function ‘memset’
bcssmain.i:3135: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3177: warning: incompatible implicit declaration of built-in function ‘memcpy’
bcssmain.i:3212: warning: incompatible implicit declaration of built-in function ‘strncpy’
bcssmain.i: In function ‘GetInCodeByOutCode’:
bcssmain.i:3287: warning: incompatible implicit declaration of built-in function ‘memset’
bcssmain.i:3300: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3307: warning: incompatible implicit declaration of built-in function ‘strcpy’
bcssmain.i:3311: warning: incompatible implicit declaration of built-in function ‘strcpy’
echo aaa--------
aaa--------
mv *.o /home/ymcard/obj/
rm bcssmain.c
不明白最后的rm是哪里出现的