Bagaimana menambahkan komentar multi baris di makefiles

113

Apakah ada cara untuk mengomentari beberapa baris dalam makefile seperti pada sintaks C /* */?

Ankur Agarwal
sumber
Versi make apa yang Anda gunakan?
egrunin

Jawaban:

152

Tidak, tidak ada yang seperti /* */komentar gaya-C di makefiles. Seperti yang disarankan orang lain, Anda dapat membuat komentar multibaris dengan menggunakan lanjutan baris. Sebagai contoh:

# This is the first line of a comment \
and this is still part of the comment \
as is this, since I keep ending each line \
with a backslash character

Namun, saya membayangkan bahwa Anda mungkin ingin mengomentari sementara sebagian dari makefile Anda untuk alasan debugging, dan menambahkan garis miring terbalik pada setiap baris sebenarnya tidak praktis. Jika Anda menggunakan GNU make, saya sarankan Anda menggunakan ifeqpetunjuk dengan ekspresi yang sengaja salah. Sebagai contoh:

ifeq ("x","y")
# here's all your 'commented' makefile content...
endif

Semoga membantu.

Eric Melski
sumber
3
Perhatikan, jika Anda ingin "mengomentari" baris dalam suatu aturan, jangan membuat baris ifeq, endif indent.
Simon Márton
13

Saya yakin jawabannya tidak. Satu-satunya gaya komentar yang dapat saya temukan adalah # untuk setiap baris, atau gunakan \ untuk membungkus baris pertama.

BowlesCR
sumber
10

Catatan tentang ide menggunakan ifequntuk melakukan komentar multibaris di make (1). Mereka tidak bekerja dengan baik karena jika Anda menulis yang berikut ini:

ifeq (0,1)
    do not risk ifeq comments
    else trouble will find you
    ifeq is even worse
endif

Teks antara ifeq dan endif akan tetap diurai oleh make yang berarti Anda tidak dapat menulis apa pun yang Anda inginkan di bagian itu. Dan jika Anda ingin menulis komentar yang panjang dan menulis apa pun yang Anda inginkan di komentar (termasuk tanda $, titik dua, dan lainnya yang semuanya memiliki arti untuk dibuat) maka Anda harus mengomentari setiap baris. Jadi kenapa ifeq... :)

Mark Veltzer
sumber
Itu tidak benar. Satu-satunya yang dilakukan gmake "parsing" dari teks di dalam ifeq adalah mencari endif. Anda dapat memverifikasi ini dengan mudah dengan makefile yang memiliki sintaks palsu di dalam ifeq. Selama kondisi di ifeq bernilai false, gmake akan dengan senang hati mengabaikan kesalahan sintaks di dalam ifeq.
Eric Melski
3
Itu tidak benar. Coba contoh berikut: ifeq (0, 1) jangan ambil risiko ifeq komentar lain masalah akan menemukan Anda endif The else di awal baris membuat kesalahan. Jadi jika tidak , ifeq , ifneq dan mungkin banyak simbol lain yang saya tidak tahu akan memberi Anda masalah.
Mark Veltzer
Itu poin yang adil, tetapi sebagian besar kesalahan sintaksis akan diabaikan.
Eric Melski
5
define BOGUS
lines
.....
endef
giuliolunati
sumber
1
tunduk pada peringatan yang sama seperti yang ifeqsaya kira, tetapi bekerja untuk saya. Terima kasih!
jcomeau_ictx
3

Bukan persis seperti yang Anda cari, tapi serupa dalam semangat. Saya tidak berharap itu menjadi jawaban yang diterima, tetapi mungkin itu dapat membantu seseorang.

Dengan asumsi Anda mengedit makefile Anda di VIM:
Putuskan baris mana yang ingin Anda komentari atau pilih dengan 'v'.

Kemudian Anda dapat menggunakan regex s/^/#/untuk mengomentari baris
dan s/^#//mengembalikannya.

--Catatan--

  • Untuk membuka baris perintah vim, tekan :(titik dua)
  • Untuk mempersiapkan perintah untuk baris 'n' berikutnya, gunakan .,+n
  • Contoh baris yang menggunakan "v" terlihat seperti: '<,'>s/^/#/
goodguy5
sumber
2
Lebih mudah menggunakan mode blok. Pergi ke awal baris pertama untuk berkomentar, ctrl-v, panah ke bawah sampai akhir, kapital I, #, escape. Untuk menghapus komentar: ctrl-v, panah ke bawah sepenuhnya, x
brunch875
1

Di emacs, Anda dapat menandai wilayah yang ingin Anda beri komentar dan tekan M-;(yang berjalan comment-dwim).

Dror
sumber