Chinaunix

标题: linux下的make为何会自动删除预编译输出的中间文件*.c? [打印本页]

作者: seedon    时间: 2004-10-11 16:57
标题: linux下的make为何会自动删除预编译输出的中间文件*.c?
我在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自动执行的,不知道有什么办法禁止掉吗?请大家帮忙看看,谢了先。
作者: 小雨加雪    时间: 2004-10-11 19:27
标题: linux下的make为何会自动删除预编译输出的中间文件*.c?
make oral.cpp -f Makefile.local




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2