확인: *** 대상이 없습니다. 멈추다

확인: *** 대상이 없습니다. 멈추다

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

이 오류의 가장 큰 원인은 null Makefile(또는 makefile)이 있다는 것입니다.

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

위와 같이 사용하는 경우에도 이 오류를 유발하는 null 값이 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.

관련 정보