2016-11-17 62 views
0

我试图结合我的makefiles,所以我可以简单地构建一次,它会在继续构建应用程序之前完全预编译pc文件。这应该是可能的,但对于我的生活我无法弄清楚。这是我的makefile(对于redhat 7)。我可以在应用程序的make文件中有条件地构建我的PC文件(Oracle Pro * c)吗?

COMPILEDATE = $(shell date) 
COMPILE=g++ -std=c++11 -Wall -Wuninitialized -g 
OSTYPE = $(shell uname) 
LIBDIR=../../lib/ 
INC=../../include/ 
FILES=myProcess 
OBJS= myProcess.o \ 
sqlStuff.o 

O8P=$(ORACLE_HOME) 
O8P=/u01/app/oracle/11.2.0/client_1 
ORACLE_HOME=/u01/app/oracle/11.2.0/client_1 
PROC_LINES=proc lines=yes code=ANSI_C iname=sqlStuff.pc parse=partial iname=sqlStuff include=. include=$(ORACLE_HOME)/precomp/public include=$(ORACLE_HOME)/rdbms/public include=$(ORACLE_HOME)/rdbms/demo include=$(ORACLE_HOME)/plsql/public include=$(ORACLE_HOME)/network/public 

all: $(FILES) 

compileInfo.o : FORCE 
    $(COMPILE) -c compileInfo.cpp -o [email protected] -I$(INC) -DCDATE="\"$(COMPILEDATE)\"" -DBUILD="\"$(LSWBUILD)\"" 

FORCE : 

%.o : %.cpp $(INC)myProcess.h 
$(COMPILE) -c $< -o [email protected] -I$(INC) -DCDATE="\"$(COMPILEDATE)\"" 

sqlStuff.o : sqlStuff.c 
    gcc -g -Wall -O -c -lclntsh -I. -I$(ORACLE_HOME)/precomp/public -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/plsql/lib -I$(ORACLE_HOME)/network/lib 

sqlStuff.c : sqlStuff.pc 
    $(PROC_LINES) 

myProcess: $(OBJS) $(LIBDIR)libbase.a $(INC)myProcess.h sqlStuff.o 
    $(COMPILE) -o myProcess$(OBJS) -L$(LIBDIR) -lbase 

clean: 
rm -f $(FILES) 
rm -f sqlStuff 
rm -f sqlStuff.c 
rm -f sqlStuff.lis 
rm -f $(OBJS) 
rm -f core 
rm -f *.out 
rm -f *.log 
rm -f *.err 

是我的错,我没有解释什么,问题是:

我编译使用此版本NetBeans的命令:$ {MAKE} -f Makefile文件。错误是PCC-S-02015,无法打开我未预编译的对象上的包含文件,sqlStuff.o

+0

你究竟如何尝试呢?你能提供命令吗?你忘了告诉我们当你尝试时会发生什么? – quantummind

+0

对不起,我正在使用这个生成命令编译netbeans:$ {MAKE} -f Makefile。错误是PCC-S-02015,无法在未预编译的对象上打开包含文件,sqlStuff.o –

回答

0

查看sqlStuff.o : sqlStuff.c下的gcc命令,它看起来应该有一个-o sqlStuff.o标志告诉gcc输出应写入sqlStuff.o而不是默认值,即a.out

祝你好运。

相关问题