Makefile:无规则可作为目标

乌比

我正在遵循有关makefile的指南,但是我对上一个示例完全不了解,并且由于出现错误,我无法使makefile工作make: *** No rule to make target "obj/date.o", needed by "Whatsapp". Stop.

这是我的makefile:

IDIR = ../include
CC = gcc
CFLAGS = -I$(IDIR)

ODIR = obj
LDIR = ../lib

LIBS = -lncurses

# Keep the alphabetical order!
_DEPS = \
constants.h\
date.h\
inOut.h\
languages.h\
message.h\
mycurses.h\
mysocket.h\
text.h\
time.h\
user.h\

DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))

# Keep the alphabetical order!
_OBJ = \
date.o\
inOut.o\
languages.o\
main.o\
message.o\
mycurses.o\
mysocket.o\
text.o\
time.o\
user.o\

OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))

# these two lines should tell the compilator that my .o files depend by .c files, don't they?
$(ODIR)/%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

Whatsapp:   $(OBJ)
    $(CC) -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean

clean:
    rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ 

显然,我所有的人*.c都在当前文件夹中,所以我真的不知道自己缺少什么。

为了更加清楚,这是当前文件夹的内容:

urbijr@urbijr-VirtualBox:/media/sf_Whatsapp_CLIENT$ ls
constants.h  indexbook.txt  languages.c  makefile              message.h    mycurses.h  text.c  time.h
date.c       inOut.c        languages.h  message.c             message.txt  mysocket.c  text.h  user.c
date.h       inOut.h        main.c       message_for_user.txt  mycurses.c   mysocket.h  time.c  user.h
迈克尔·迈尔|

您的依存关系与您在中指定的不一样makefile下面的行指定所有包含文件应位于目录中$(IDIR)

DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))

设置为../include,但是似乎所有的头文件都在同一目录中。将它们移动到../include或更改IDIR.(当前目录)。

您还需要创建输出目录(obj),因为make不会自动执行此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android本机实现抛出:***无规则可作为目标

Makefile:无规则作为目标:如何设置正确的规则?

OCaml Makefile:无规则可定位

连续运行Makefile会给出“无规则可导致目标”错误

linux C ++ gmake“没有规则可作为目标”

无法编译Podfile“缺少输入,无规则可建立”

Qt Creator中的通用C ++项目-没有规则可作为目标

带有Qt5的Netbeans:没有规则可作为目标

更新后,我得到:运行MAKE的“无规则建立目标”,为什么?

电报编译过程:无规则使目标为“ /usr/lib/libicutu.a”

获取“无规则以创建目标”模块”。在制作文件上

修复“令牌无规则”宏错误

没有规则可作目标-在Qt Creator中使用资源

Firebase数据库,权限被拒绝(无规则),很快

gcc makefile错误:“没有规则可以使目标……”

makefile: 没有规则可以制作目标 '%.o'

d3.js的onclick和触摸无规则上topojson地图

如何在TensorFlow中动态设置无规则卷积的膨胀率?

递归makefile没有规则可以将目标设置为“ all”。停止

gcc makefile错误:make:***没有规则可以使目标

make: *** 没有规则可以制作目标 'Makefile.inc'。停止

Snakemake:目标规则可能不包含通配符

内核编程:没有规则可以使目标“ -C”

make:没有规则可以成为目标。停止

生成错误“ ***没有规则可用于建立目标”,其中目标为空

问:目标规则可能不包含通配符Snakemake中的错误-目标中没有通配符?

Makefile规则与源文件和目标文件

Makefile 没有针对目标的规则

make给出了错误的make:***没有规则可以使目标“干净”。停止