Makefile“未找到makefile。”

问题描述 投票:0回答:1

用C编写程序后,我创建了以下Makefile:

名称:makefile

内容:

CC = gcc
OBJS = map.o extended_map.o election.o
EXEC = election
DEBUG_FLAG = -DNDEBUG
COMP_FLAG = -std=c99 -Wall -pedantic-errors -Werror

$(EXEC) : $(OBJS)
$(CC) $(DEBUG_FLAG) $(OBJS) -o $@
map.o:
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
extended_map.o:
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
election.o:
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.c
clean:
    rm -f $(OBJS) $(EXEC)

但是当我在Linux服务器上运行以下命令时,出现错误:

-bash-4.2$ ls
election.c  extended_map.c  main.c          makefile.txt  map.h        utilities.h
election.h  extended_map.h  Makefile.cmake  map.c         utilities.c
-bash-4.2$ make
make: *** No targets specified and no makefile found.  Stop.

注意:我读了很多类似的问题,但是并没有帮助我解决这个问题。

linux makefile
1个回答
0
投票

https://www.gnu.org/software/make/manual/make.html#Makefile-Names(我突出显示了关键部分):

默认情况下,当make查找makefile时,它将按顺序尝试以下名称:GNUmakefile,makefile和Makefile

通常,您应该将您的makefile称为makefile或Makefile。 (我们建议使用Makefile,因为它明显出现在目录列表的开头附近,紧靠其他重要文件(如README)。)对于大多数makefile,建议不要使用选中的名字GNUmakefile。如果您有一个特定于GNU make的makefile,而其他版本的make不会理解该文件,则应使用此名称。其他make程序查找makefile和Makefile,而不查找GNUmakefile。

如果make没有找到这些名称,则不使用任何makefile。然后,您必须使用命令参数指定目标,make会尝试找出如何仅使用其内置的隐式规则对其进行重新制作。请参阅使用隐式规则。

[如果要为makefile使用非标准名称,则可以使用'-f'或'--file'选项指定makefile的名称。参数“ -f名称”或“ --file =名称”告诉make将文件名读取为makefile。如果您使用多个“ -f”或“ --file”选项,则可以指定多个makefile。所有makefile均以指定的顺序有效地串联在一起。如果您指定“ -f”或“ --file”,则不会自动检查默认的生成文件名称GNUmakefile,makefile和Makefile。

因此,make将查找GNUmakefile,makefile或Makefile文件,而不查找makefile.txt,除非您使用-f--file指定文件名>

© www.soinside.com 2019 - 2024. All rights reserved.