これは私のメイクファイルです:
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.
どうすれば修正できますか?
make はタブと非常に愚かな関係にあります。すべてのルールのすべてのアクションは、タブで識別されます。いいえ、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
の解決策は、プラグインPyCharm
をインストールすることです。Makefile support
Preferences
( cmd + ,
)Plugins
- >Marketplace
Makefile support
、IDE をインストールして再起動します。これで問題が修正され、makefile の構文が提供されるはずです。
キーポイントは「HARD TAB」でした 1.空白の代わりにTABを使用したかどうかを確認します
これは、タブがスペースに置き換えられているためです。この機能を無効にするには、
gedit->編集->設定->エディタ
のチェックを外します
"タブをスペースに置き換えます"