make: *** 无目标。停止

make: *** 无目标。停止

为什么当make代码中的命令抛出错误时make: *** No targets. Stop. 代码:

    NAME := program
FLAG := -std=c11 -Wall -Wextra -Werror -Wpedantic

all: $(NAME)

$(NAME): *.c
  clang $(FLAG) -o $(NAME) *.c -lm

clean:
  rm -rf $(NAME)

reinstall: clean all

答案1

出现此错误的最可能原因是有一个空Makefile(或makefile)。

touch makefile
make
make: *** No targets.  Stop.

请注意,如果您如上所示使用Makefile,仍然有可能存在makefile触发此错误的空值。删除您不使用的文件。

另请注意,您的操作行Makefile必须缩进tab而不是空格:

$(NAME): *.c
        clang $(FLAG) -o $(NAME) *.c -lm

如果你忘记了这一点,你会得到一个不同的错误。

完整性工作场景:

# Nothing in the current directory
ls
make
  make: *** No targets specified and no makefile found.  Stop.
# Create "Makefile" and list it
printf 'thing:\n\tdate >thing\n' >Makefile
cat Makefile
  thing:
          date >thing
# Run the "Makefile" recipe    
make
  date >thing
# Create a bogus empty "makefile"
touch makefile
make
  make: *** No targets.  Stop.

相关内容