回答:
オンラインマニュアルに示されているように、そのエラーの最も一般的な原因は、make
タブ文字が必要な場合に行がスペースでインデントされることです。
target:
\tcmd
どこ \t
ですかTAB(U + 0009)
target:
....cmd
ここで、それぞれ.
がスペース(U + 0020)を表します。
にやにや笑うために、そして誰かが同様のエラーに遭遇した場合:
次のように関数を定義するルールを呼び出したため、悪名高い「セパレーターがありません」エラーが発生しました
($eval $(call function,args))
のではなく
$(eval $(call function,args))
つまり、と($
いうより$(
。
0x20
そこに「スペース」を持っていなかったと思います、それは正しいですか?
$
qmakeで生成されたMakefileにセパレータファイルがありませんでした。Qtコードを別のプラットフォームに移植していました。QMAKESPECもMAKEセットもありませんでした。これが私が答えを見つけたリンクです:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
以下のMakefileコードが機能しました:
obj-m = hello.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean