これは私のメイクファイルです:
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.
どうすれば修正できますか?
これは私のメイクファイルです:
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
依存関係が正しく終了し、タブがルールのアクションをマークし、makeユーティリティで簡単に識別できるようにするために、タブの存在^I
と行の$
末尾の両方が重要であることを示しています。
例:
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コードで、右下隅の「スペース:4」をクリックし、Makefileを編集するときにタブに変更します。
Tab空白ではなく、常に後にコマンドを記述してください。
これはgcc
あなたのケースの行(行#4)に適用されます。の前にタブを挿入する必要がありますgcc
。
また、交換してください\rm -fr ll
とrm -fr ll
。このコマンドの前にもタブを挿入します。
かなり古い質問ですが、vi/vim
エディタを使用してタブを視覚化するもう1つのオプションについてお話ししたいと思います。vi/vim
インストールしている場合は、Makefile
(などvim Makefile
)を開いてEnter キーを押します: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でなければなりません。