これが私の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はタブと非常に愚かな関係にあり、すべてのルールのすべてのアクションはタブによって識別されます......そしてNo 4スペースはタブを作らず、タブだけがタブを作ります...
確認するには、コマンドcat -e -t -v makefile_name
を使用します。
これは、^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
お役に立てれば !!
あなたは常に空白ではなく "タブ"の後にコマンドを書くべきです。
これはあなたの場合 "gcc"行(4行目)に適用されます。あなたはgccの前にtabを挿入する必要があります。
また、\ rm -fr llを "rm -fr ll"に置き換えます。このコマンドの前にもタブを挿入
VS Codeでは、直下にある "Space:4"をクリックしてMakefileを編集するときにそれをtabに変更してください。
かなり古い質問ですが、それでもタブを視覚化するためにvi/vim
エディタを使用するもう1つのオプションについて言いたいと思います。 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$
PyCharm
に対する解決策は、Makefile support
プラグインをインストールすることです。
Preferences
を開く(cmd + ,
)Plugins
- > Marketplace
に行きますMakefile support
を検索し、IDEをインストールして再起動します。これで問題が解決し、メークファイルの構文が提供されます。
キーポイントは "HARD TAB"でした。1.空白の代わりにTABを使ったかどうかをチェックします。2.あなたの.vimrcで "set tabstop = X"をチェックします
タブがスペースに置き換えられるからです。この機能を無効にするには
gedit-> edit-> preferences-> editor
チェックを削除
" タブをスペースに置き換えます "
誰かがIntellijの製品を使用している場合、これに対する解決策は次のとおりです。
Other File Types
を選択する必要があります。Use tab character
のチェックボックスをマークし、Tab size
とIndent
の値は4でなければなりません。.editorconfig
を使用してタブを自動的に修正します。
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[Makefile]
indent_style = tab