programing

makefile:4:** 구분자가 없습니다.이제 그만

randomtip 2022. 7. 14. 21:07
반응형

makefile:4:** 구분자가 없습니다.이제 그만

이것은 나의 make 파일입니다.

all:ll

ll:ll.c   
  gcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<

clean :
  \rm -fr ll

make clean ★★★★★★★★★★★★★★★★★」make make , 다다음음음 , , , , , , , , 。

:makefile:4: *** missing separator.  Stop.

어떻게 하면 고칠 수 있죠?

탭과 아주 바보 같은 관계를 맺고 있습니다.모든 규칙의 모든 작업은 탭으로 식별됩니다.네 칸으로 계산하면 안 돼요탭만이 탭을 만듭니다.

'하다'라는 명령어를 합니다.cat -e -t -v makefile_name.

이 있다, 하다, 하다, 하다, 탭이 요.^I에는 「」가 붙어 있습니다.$둘 다 의존관계가 올바르게 종료되도록 하기 위해 필수적이며, make 유틸리티에서 쉽게 식별할 수 있도록 규칙에 대한 액션 마크가 탭에 표시됩니다.

예제:

Kaizen ~/so_test $ cat -e -t -v  mk.t
all:ll$      ## here the $ is end of line ...                   
$
ll:ll.c   $
^Igcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<$ 
## the ^I above means a tab was there before the action part, so this line is ok .
 $
clean :$
   \rm -fr ll$
## see here there is no ^I which means , tab is not present .... 
## in this case you need to open the file again and edit/ensure a tab 
## starts the action part

VS 코드에서 Makefile 편집 시 아래쪽 모서리에 있는 "Space: 4"를 클릭하고 탭으로 변경하기만 하면 됩니다.

TLDR;

은 quirkymakefile입니다.
을 「코드로 로 합니다.make코드는 공백으로만 들여써야 합니다.
을 「코드로 로 합니다.bash코드는 으로만 들여써야 합니다.

sometask:
  ifeq($FOO,bar)   // this is make code. only spaces
    echo "foobar"  // this is bash code. only tabs
  endif            // again, this is make code. only spaces

엄밀히 말하면 통역사를 지시하는 선두 들여쓰기죠

명령어는 항상 공백이 아닌 뒤에 써야 합니다.

이것은 에 적용됩니다.gcc(#4)을 누르다은 지만, 지만, 지만, 지만, 지만, 지만, 지만, 지만, 앞에 합니다.gcc.

교환도 합니다.\rm -fr llrm -fr ll 이합니다. 이 명령어 앞에도 탭을 삽입합니다.

를 사용하여 탭을 자동으로 수정합니다.

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4

[Makefile]
indent_style = tab

:의 :PyCharm하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다, 설치하다.Makefile support★★★★★★★★★★★★★★★★★★:

  1. .Preferences )cmd + ,)
  2. ★★★★★★★★★★★★★★★로 이동Plugins->Marketplace
  3. (Search(검))Makefile supportIDE를 사용합니다.

그러면 문제가 해결되고 makefile 구문이 제공됩니다.

4행은 "탭" 대신 "스페이스, 스페이스"로 시작했지만 다른 것은 없습니다.

이지만, 이 질문을 사용해서 한 를 더 .vi/vim탭을 시각화할 수 있습니다.「 」가 vi/vim를 인스톨 하고 , 「」를 .Makefilevim Makefile합니다.:set list된 탭

 %-linux: force$
^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then \$
^I^Iecho ===== Generating build tree for legacy $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@ legacy; \$
^Ielse \$
^I^Iecho ===== Generating build tree for $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@; \$
^Ifi$
^Icd build-$@;make$

인텔리제 제품을 사용하고 계신 분은, 다음과 같은 솔루션을 이용하실 수 있습니다.

  1. [ Preferences ]> [ Editor ]> [ Code Style ]으로 이동합니다.
  2. 여기서 문제와 관련된 파일 형식을 선택해야 합니다., 의 경우 를 .Other File Types.
  3. 이 열리면 .Use tab characterTab size ★★★★★★★★★★★★★★★★★」Indent4시라고 하다.

추가한 탭과 새 행을 vim에서 이해할 수 있도록 하는 방법을 검색하는 경우 먼저 vim에서 탭을 사용하도록 설정해야 합니다.

하다, 하다, 하다를 사용해서 할 수 있어요.:set noet즉, 탭을 추가하기 전에 (스페이스에서 Tab으로 전환합니다.)

^I)과 같은 상태가 됩니다.*** missing separator. Stop. :)make 부 error 、 make 、 make 、 make 해해 error error error error 。 : )

다시 수 요.:set et

makefile 편집에 MCEDIT를 사용하는 경우.다음과 같은 마크가 표시되어야 합니다.여기에 이미지 설명 입력

탭이 공백으로 대체되기 때문입니다.이 기능을 무효로 하려면 , 으로 이동합니다.

gedit->edit->설정->개요

다음 체크에서

"탭을 공백으로 바꾸기"

요점은 'HARD TAB'입니다.

  1. 공백 대신 TAB을 사용했는지 확인합니다.
  2. 해 주세요..vimrc★★★★★★에set tabstop=X

-A 또는 -show-all을 사용하여 모든 것을 표시합니다.

Make 파일을 편집하는 경우:

Windows-> Preferences->General->Editor->Text Editors->Show Whitespace Characters -> Apply

또는 아래 표시된 바로 가기를 사용합니다.

아래 그림과 같이 탭은 회색 ">"로 표시되고 공간은 회색 ""로 표시됩니다.

여기에 이미지 설명 입력

만약 누군가가 이 문제를 발견하게 된다면

*** missing separator.  Stop.

빌드 중에 경로를 다시 확인해야 합니다. "#"과 같은 특수 문자를 포함할 수 없습니다.

언급URL : https://stackoverflow.com/questions/16931770/makefile4-missing-separator-stop

반응형