简单makefile问题,求指导,谢谢

smallbear_2008 2014-10-15 05:32:54

linux:/tmp/test/makefile/dir # vi makefile

.PHONY:all

MD = mkdir
RM = rm -rf
OBJS = objs
EXE = exe

all: $(OBJS) $(EXE)
$(MD) $^

clean: $(OBJS) $(EXE)
$(RM) $^


为什么执行 make 或 make all 的时候不能自动创建目录? all目录下的命令不能识别吗? 报错为:
linux:/tmp/test/makefile/dir # make
make: *** No rule to make target `objs', needed by `all'. Stop.

怎么调试makefile呢?
而如果我收到创建目录的话,执行make clean是可以的。
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
铖邑 2014-10-17
  • 打赏
  • 举报
回复
腾出点时间,多花在钻研技术方面吧,工具呢,选择省时省力的吧
铖邑 2014-10-17
  • 打赏
  • 举报
回复
引用 5 楼 smallbear_2008 的回复:
cmake 没接触过,。。 正在看 驾驭makefile 呵呵 有 跟我一起写makefile 还没看
很简单的,我现在基本都不手工写makefile,费事不说,如果你拿到别的环境,又得重新做一个工程多麻烦啊 如果你用cmake,除了能生成makefile,你还可以生成VC XCODE ECLIPSE CODEBLOCKS等等
smallbear_2008 2014-10-17
  • 打赏
  • 举报
回复
cmake 没接触过,。。 正在看 驾驭makefile 呵呵 有 跟我一起写makefile 还没看
zhxianbin 2014-10-15
  • 打赏
  • 举报
回复
Google 跟我一起写 Makefile
铖邑 2014-10-15
  • 打赏
  • 举报
回复
OK 不建议直接编写makefile,劳心劳力,推荐CMake
smallbear_2008 2014-10-15
  • 打赏
  • 举报
回复
谢谢,我改了下,让 右边的先决条件 成为目标,虽然目标是空的,但是可以执行出来了。
linux:/tmp/test/makefile/dir # cat makefile 
#.PHONY:all

MD = mkdir
RM = rm -rf
OBJS = objs
EXE = exe

all:    $(OBJS) $(EXE)
        $(MD)   $^

$(OBJS):

$(EXE):

clean:  $(OBJS) $(EXE)
        $(RM)   $^

linux:/tmp/test/makefile/dir # make
mkdir   objs exe

引用 1 楼 xpdavis 的回复:
objs必须是存在的东西(在冒号右边),如果不存在将它从冒号右边去掉
铖邑 2014-10-15
  • 打赏
  • 举报
回复
objs必须是存在的东西(在冒号右边),如果不存在将它从冒号右边去掉

23,118

社区成员

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

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