이것은 내 makefile입니다.
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.
어떻게 고칠 수 있습니까?
이것은 내 makefile입니다.
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.
어떻게 고칠 수 있습니까?
답변:
makefile은 탭과 매우 어리석은 관계가 있으며 모든 규칙의 모든 동작은 탭으로 식별됩니다. 그리고 4 칸은 탭을 만들지 않고 탭만 탭을 만듭니다.
내가 명령을 사용하는지 확인하려면 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
makefile
튜토리얼에서 일부 줄을 붙여 넣었 지만 작동하지 않았습니다. 공백을 삭제하고 Tab
대신 넣은 후에 만 작동했습니다!
-v
수단 과 수단 cat
때문에 명령 옵션 이 중복됩니다 . -e
-vE
-t
-vT
VS Code에서 오른쪽 아래 모서리에있는 "Space : 4"를 클릭하고 Makefile을 편집 할 때 탭으로 변경하십시오.
항상 Tab공백이 아닌 뒤에 명령을 작성해야 합니다.
이것은 gcc
귀하의 경우 라인 (라인 # 4)에 적용됩니다 . 전에 탭을 삽입해야합니다 gcc
.
또한 교체 \rm -fr ll
와 함께 rm -fr ll
. 이 명령 앞에 탭을 삽입하십시오.
꽤 오래된 질문이지만 여전히 vi/vim
편집기를 사용하여 탭을 시각화하는 옵션에 대해 하나 더 말하고 싶습니다 . vi/vim
설치 한 경우 Makefile
(예 :)를 열고을 vim 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$
.editorconfig
탭을 자동으로 수정하는 데 사용 :
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[Makefile]
indent_style = tab
누구든지 Intellij의 제품을 사용하는 경우 이에 대한 솔루션은 다음과 같습니다.
Other File Types
.Use tab character
및주의, Tab size
그리고 Indent
값은 4 있어야합니다.이것은 탭이 공백으로 대체되기 때문입니다. 이 기능을 비활성화하려면
gedit-> 편집-> 환경 설정-> 편집기
확인을 제거
" 공백으로 탭 바꾸기 "