Chinaunix

标题: makefile,No rule to make target的问题 [打印本页]

作者: GodPig    时间: 2008-12-22 20:34
标题: makefile,No rule to make target的问题
我的源文件有:
dbop.h         //数据库操作的头文件
dbop.pc       //数据库操作的源文件,Pro*C
main.cpp      //main函数,调用数据库操作函数

makefile文件内容如下:
NAME=main

PROC_FLAG=code=cpp ltype=none
CC_FLAG=-g -Wall -L ${ORACLE_HOME}/lib -l clntsh

OBJS = main.o \
        dbop.o

$(NAME): $(OBJS)
        g++ $(CC_FLAG) $(OBJS)

#生成规则

.cpp.o:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g++ $(CC_FLAG) -c $<

.pc.cpp:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proc $(PROC_FLAG) iname=$<

clean:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f *.cpp


编译的时候出现了这样的错误:
make: *** No rule to make target `dbop.o', needed by `main'.  Stop.

下面有:
.pc.cpp

.cpp.o
来表明产生.o的规则

我感觉过程应该是这样的
找dbop.o,找不到,用.cpp.o规则来生成,所以找dbop.cpp,找不到,则用.pc.cpp规则来生成,找到了dbop.pc
然后依次生成,最后可以生成dbop.o文件的呀

但实际情况却出错了
我现在初学,不知道哪儿出错了?

非常感谢!
作者: ricesty    时间: 2008-12-22 21:48
实在不懂,就这么几个文件,Makeflie怎么写的这么复杂难懂?
作者: zzyong08    时间: 2008-12-23 09:58
标题: 回复 #1 GodPig 的帖子
%.o:%.cpp
        g++ -o $@ $(CC_FLAG) -c $<

试试这个
作者: GodPig    时间: 2008-12-23 10:18
原帖由 ricesty 于 2008-12-22 21:48 发表
实在不懂,就这么几个文件,Makeflie怎么写的这么复杂难懂?


呵呵,我初学
想用makefile来编译

实际上现在我编译这几个程序就写了个shell脚本,就几个命令
作者: GodPig    时间: 2008-12-23 10:31
标题: 回复 #3 zzyong08 的帖子
谢谢!
我试了试,没成功,可能是我的文件哪儿还有问题,我再看看~
作者: net_robber    时间: 2008-12-23 10:45
  1. clean:
  2.         rm -f *.cpp
复制代码





so,

how about main.cpp
作者: stone_pub    时间: 2008-12-23 12:48
all: ${Name}




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