- 论坛徽章:
- 0
|
我在linux下使用make进行oracle或者informix开发编译时,每次编译后make总是会自动将*.pc或者*.ec预编译后生成的*.c中间文件删除,同样的操作在IBM AIX下都是正常的,不会删除*.c中间文件。我试着使用了不同版本的make,都存在这个问题。
我的makefile如下:
################OPTION###################
CCOMPILE = gcc
CPPCOMPILE = g++
COMPILEOPTION = -c -g
INCLUDEDIR = -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/precomp/public
LINK = g++
LINKOPTION = -g -o /home/oracle/tmp/ora1/ora1 -lclntsh
LIBDIRS = -L$(ORACLE_HOME)/lib
OBJS = ora1.o
OUTPUT = /home/oracle/tmp/ora1/ora1
APPENDLIB =
PROC_OPTION = DEFINE=_PROC_ MODE=ORACLE LINES=true CODE=CPP
ESQL_OPTION = -g
################OPTION END################
ESQL = esql
PROC = proc
$(OUTPUT) (OBJS) $(APPENDLIB)
$(LINK) $(LINKOPTION) $(LIBDIRS) $(OBJS) $(APPENDLIB)
clean:
rm -f $(OBJS)
rm -f $(OUTPUT)
all: clean $(OUTPUT)
.SUFFIXES:
.SUFFIXES: .c .o .cpp .ecpp .pc .ec .C
.cpp.o:
$(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.cpp
.c.o:
$(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.c
.C.o:
$(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.C
.ecpp.C:
$(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ecpp
.ec.c:
$(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ec
.pc.cpp:
$(PROC) CPP_SUFFIX=cpp $(PROC_OPTION) $*.pc
make执行的输入如下:
-----------------------------------------
make -f Makefile.ora1_DEBUG ...
proc CPP_SUFFIX=cpp DEFINE=_PROC_ MODE=ORACLE LINES=true CODE=CPP ora1.pc
Pro*C/C++: Release 9.2.0.1.0 - Production on Mon Oct 11 16:50:01 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
System default option values taken from: /opt/oracle/product/9.0.1/precomp/admin/pcscfg.cfg
g++ -c -o ora1.o -c -g -I/opt/oracle/product/9.0.1/rdbms/public -I/opt/oracle/product/9.0.1/precomp/public ora1.cpp
g++ -g -o /home/oracle/tmp/ora1/ora1 -lclntsh -L/opt/oracle/product/9.0.1/lib ora1.o
ora1.o(.text+0x392): In function `main':
//ora_linux/home/oracle/tmp/ora1/ora1.pc(137): the `gets' function is dangerous and should not be used.
rm ora1.cpp
*********Make Finished*********
最后这句
rm ora1.cpp
是make自动执行的,不知道有什么办法禁止掉吗?请大家帮忙看看,谢了先。 |
|