Ini makefile saya:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
Ketika saya mencoba make clean
atau make make
, saya mendapatkan kesalahan ini:
:makefile:4: *** missing separator. Stop.
Bagaimana saya bisa memperbaikinya?
Jawaban:
makefile memiliki hubungan yang sangat bodoh dengan tab, semua tindakan dari setiap aturan diidentifikasi oleh tab. Dan tidak, 4 spasi tidak membuat tab, hanya tab yang membuat tab.
untuk mengecek saya menggunakan perintah
cat -e -t -v makefile_name
Ini menunjukkan keberadaan tab dengan
^I
dan akhiran baris dengan$
keduanya sangat penting untuk memastikan bahwa dependensi berakhir dengan benar dan tab menandai tindakan untuk aturan sehingga mereka mudah diidentifikasi ke utilitas make.Contoh:
sumber
makefile
dari tutorial, dan itu tidak berhasil. Hanya setelah menghapus spasi dan menempatkanTab
bukan berhasil!-v
opsi untukcat
perintah adalah berlebihan di sini karena-e
sarana-vE
dan-t
sarana-vT
.Pada VS Code, cukup klik "Spasi: 4" di sudut kanan dan ubah ke tab saat mengedit Makefile Anda.
sumber
Anda harus selalu menulis perintah setelah Tabspasi dan bukan spasi.
Ini berlaku untuk
gcc
baris (baris # 4) dalam kasus Anda. Anda harus memasukkan tab sebelumnyagcc
.Ganti juga
\rm -fr ll
denganrm -fr ll
. Sisipkan tab sebelum perintah ini juga.sumber
Solusi untuk
PyCharm
menginstalMakefile support
plugin:Preferences
(cmd + ,
)Plugins
->Marketplace
Makefile support
, instal, dan mulai ulang IDE.Ini harus memperbaiki masalah dan menyediakan sintaks untuk makefile.
sumber
Ini pertanyaan yang cukup lama tetapi saya masih ingin mengatakan tentang satu opsi lagi menggunakan
vi/vim
editor untuk memvisualisasikan tab. Jika Anda telahvi/vim
menginstal maka bukaMakefile
(misalnyavim Makefile
) dan masukkan:set list
. Ini akan menunjukkan jumlah tab yang dimasukkan seperti di bawah ini,sumber
Menggunakan
.editorconfig
untuk memperbaiki tab secara otomatis:sumber
Poin kuncinya adalah "HARD TAB" 1. Periksa apakah Anda menggunakan TAB daripada spasi 2. Periksa .vimrc Anda untuk "set tabstop = X"
sumber
Jika ada di antara Anda yang menggunakan produk dari Intellij, solusinya adalah sebagai berikut:
Other File Types
.Use tab character
dan berhati-hatilah,Tab size
danIndent
nilainya harus 4.sumber
Jika Anda menggunakan mcedit untuk mengedit makefile. Anda harus melihat tanda berikut.
sumber
Ini karena tab diganti dengan spasi. Untuk menonaktifkan fitur ini, buka
gedit-> edit-> preferensi-> editor
dan hapus centang untuk
" ganti tab dengan spasi "
sumber