免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 20475 | 回复: 6
打印 上一主题 下一主题

[C] makefile,No rule to make target的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-22 20:34 |只看该作者 |倒序浏览
我的源文件有:
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文件的呀

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

非常感谢!

论坛徽章:
0
2 [报告]
发表于 2008-12-22 21:48 |只看该作者
实在不懂,就这么几个文件,Makeflie怎么写的这么复杂难懂?

论坛徽章:
0
3 [报告]
发表于 2008-12-23 09:58 |只看该作者

回复 #1 GodPig 的帖子

%.o:%.cpp
        g++ -o $@ $(CC_FLAG) -c $<

试试这个

论坛徽章:
0
4 [报告]
发表于 2008-12-23 10:18 |只看该作者
原帖由 ricesty 于 2008-12-22 21:48 发表
实在不懂,就这么几个文件,Makeflie怎么写的这么复杂难懂?


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

实际上现在我编译这几个程序就写了个shell脚本,就几个命令

论坛徽章:
0
5 [报告]
发表于 2008-12-23 10:31 |只看该作者

回复 #3 zzyong08 的帖子

谢谢!
我试了试,没成功,可能是我的文件哪儿还有问题,我再看看~

论坛徽章:
0
6 [报告]
发表于 2008-12-23 10:45 |只看该作者
  1. clean:
  2.         rm -f *.cpp
复制代码





so,

how about main.cpp

论坛徽章:
0
7 [报告]
发表于 2008-12-23 12:48 |只看该作者
all: ${Name}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP