关于makefile: No rule to make target `test.o', needed by `ctest'. Stop.

shayne000 2018-07-26 10:10:18
写了makefile但是报错说没有可以生成目标test.o的规则
目录结构:
代码在./src中头文件在./include中 希望生成的.o在./obj里面 生成的可执行程序在./
A.cpp成功生成了A.o 不知道为什么test.cpp出错了
makefile如下:
 
1 sdir=./src/
2 odir=./obj/
3 idir=./include/
4 srcd=$(wildcard ./src/*.cpp)
5 src=$(notdir $(srcd))
6 obj=$(patsubst %.cpp,%.o,$(src))
7 target=ctest
8 $(target):$(odir)$(obj)
9 g++ $^ -o $@
10 $(odir)%.o:$(sdir)%.cpp
11 g++ -c $< -o $@ -I$(idir)
12 .PHONY:clean
13 clean:
14 rm $(odir)$(obj) $(target) -f

...全文
2419 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
elibu 2018-07-28
  • 打赏
  • 举报
回复
我知道问题了:obj不带路径,到第8行时只是一个替换,test.o没有路径
shayne000 2018-07-27
  • 打赏
  • 举报
回复
引用 1 楼 jklinux 的回复:
问题应是在8 $(target):$(odir)$(obj)这里, 最后一个test.o在没有完整路径的
$(odir)$(obj)不是给每个$(obj)都添加路径$(odir)的意思吗,请问一下大佬要怎么改才能正确实现呢
jklinux 2018-07-27
  • 打赏
  • 举报
回复
引用 3 楼 shayne000 的回复:
引用 1 楼 jklinux 的回复:
问题应是在8 $(target):$(odir)$(obj)这里, 最后一个test.o在没有完整路径的
$(odir)$(obj)不是给每个$(obj)都添加路径$(odir)的意思吗,请问一下大佬要怎么改才能正确实现呢


一般情况下,在源码的每个子目录里都有一个Makefile, 负责把整个子目录里的.o文件打包成一个文件。在源码根目录里的Makefile负责调用子目录里的Makefile, 并把每个子目录里的打包文件链接成一个程序
zhxianbin 2018-07-27
  • 打赏
  • 举报
回复
用 echo 把目标、依赖打印出来看看
shayne000 2018-07-27
  • 打赏
  • 举报
回复
目前解决方法:在.cpp替换为.o时就直接加上路径
  7 obj=$(patsubst %.cpp,$(odir)%.o,$(src))#将.cpp文件名替换为.o
8 target=ctest
9
10 $(target):$(obj)
11 g++ -g $^ -o $@
shayne000 2018-07-27
  • 打赏
  • 举报
回复
引用 5 楼 jklinux 的回复:
引用 3 楼 shayne000 的回复:
[quote=引用 1 楼 jklinux 的回复:]
问题应是在8 $(target):$(odir)$(obj)这里, 最后一个test.o在没有完整路径的
$(odir)$(obj)不是给每个$(obj)都添加路径$(odir)的意思吗,请问一下大佬要怎么改才能正确实现呢


一般情况下,在源码的每个子目录里都有一个Makefile, 负责把整个子目录里的.o文件打包成一个文件。在源码根目录里的Makefile负责调用子目录里的Makefile, 并把每个子目录里的打包文件链接成一个程序[/quote]这样啊
shayne000 2018-07-27
  • 打赏
  • 举报
回复
引用 4 楼 zhxianbin 的回复:
用 echo 把目标、依赖打印出来看看
echo显示确实没有给第二个目标加上路径
jklinux 2018-07-26
  • 打赏
  • 举报
回复
问题应是在8 $(target):$(odir)$(obj)这里, 最后一个test.o在没有完整路径的

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧