วิธีเพิ่มความคิดเห็นหลายบรรทัดใน makefiles


114

มีวิธีแสดงความคิดเห็นหลายบรรทัดใน makefiles เช่นเดียวกับในไวยากรณ์ C /* */หรือไม่?


คุณใช้ make รุ่นอะไร?
egrunin

คำตอบ:


153

ไม่ไม่มีอะไรเหมือนกับ/* */ความคิดเห็นสไตล์ C ใน makefiles ตามที่มีคนแนะนำคุณสามารถแสดงความคิดเห็นหลายบรรทัดโดยใช้ความต่อเนื่องของบรรทัด ตัวอย่างเช่น:

# 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

อย่างไรก็ตามฉันคิดว่าคุณอาจต้องการแสดงความคิดเห็นส่วนหนึ่งของ makefile ของคุณชั่วคราวด้วยเหตุผลในการดีบักและการเพิ่มแบ็กสแลชในทุกบรรทัดนั้นไม่สามารถใช้ได้จริง หากคุณใช้ GNU make ฉันขอแนะนำให้คุณใช้ifeqคำสั่งนี้ด้วยการแสดงออกที่ผิดโดยเจตนา ตัวอย่างเช่น:

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

หวังว่าจะช่วยได้


3
โปรดทราบว่าหากคุณต้องการ "แสดงความคิดเห็น" ในกฎอย่าเยื้องบรรทัด ifeq, endif
Simon Márton

13

ฉันเชื่อว่าคำตอบคือไม่ รูปแบบความคิดเห็นเดียวที่ฉันสามารถหาได้คือ # สำหรับแต่ละบรรทัดหรือใช้ \ เพื่อรวมบรรทัดแรก


10

หมายเหตุเกี่ยวกับแนวคิดในการใช้ifeqเพื่อแสดงความคิดเห็นแบบหลายบรรทัดใน make (1) มันทำงานได้ไม่ดีนักเนื่องจากถ้าคุณเขียนสิ่งต่อไปนี้:

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

ข้อความระหว่าง ifeq และ endif จะยังคงถูกแยกวิเคราะห์โดย make ซึ่งหมายความว่าคุณไม่สามารถเขียนสิ่งที่คุณต้องการในส่วนนั้นได้ และถ้าคุณต้องการเขียนความคิดเห็นยาว ๆ และเขียนสิ่งที่คุณต้องการในความคิดเห็น (รวมถึงเครื่องหมาย $ เครื่องหมายทวิภาคและอื่น ๆ ซึ่งทั้งหมดมีความหมายสำหรับการสร้าง) คุณต้องแสดงความคิดเห็นทุกบรรทัด แล้วทำไมifeq... :)


ไม่ถูกต้อง gmake "แยกวิเคราะห์" เพียงอย่างเดียวที่ทำกับข้อความภายใน ifeq คือการค้นหา endif คุณสามารถตรวจสอบสิ่งนี้ได้อย่างง่ายดายด้วย makefile ที่มีไวยากรณ์ปลอมอยู่ภายใน ifeq ตราบเท่าที่เงื่อนไขใน ifeq ประเมินว่าเป็นเท็จ gmake จะละเว้นข้อผิดพลาดทางไวยากรณ์ภายใน ifeq อย่างมีความสุข
Eric Melski

3
ไม่ถูกต้อง ลองใช้ตัวอย่างต่อไปนี้: ifeq (0, 1) อย่าเสี่ยงต่อความคิดเห็น ifeq ปัญหาอื่น ๆ จะพบว่าคุณสิ้นสุดหากสิ่งอื่นที่จุดเริ่มต้นของบรรทัดทำให้เกิดข้อผิดพลาด ดังนั้นอื่น , ifeq , ifneqและสัญลักษณ์อื่น ๆ อาจจะเป็นจำนวนมากที่ฉันไม่ทราบเกี่ยวกับการที่จะทำให้คุณเกิดปัญหา
Mark Veltzer

นั่นเป็นจุดที่ยุติธรรม แต่ข้อผิดพลาดทางไวยากรณ์ส่วนใหญ่จะถูกละเว้น
Eric Melski


3

ไม่ใช่สิ่งที่คุณกำลังมองหา แต่เป็นจิตวิญญาณที่คล้ายกัน ฉันไม่คาดหวังว่ามันจะเป็นคำตอบที่ได้รับการยอมรับ แต่อาจช่วยใครบางคนได้

สมมติว่าคุณกำลังแก้ไข makefiles ของคุณใน VIM:
เลือกบรรทัดที่คุณต้องการแสดงความคิดเห็นหรือเลือกด้วย 'v'

จากนั้นคุณสามารถใช้ regex s/^/#/เพื่อแสดงความคิดเห็นในบรรทัด
และs/^#//เปลี่ยนกลับได้

- หมายเหตุ -

  • หากต้องการเปิดบรรทัดคำสั่งกลุ่มให้กด:(โคลอน)
  • ในการเตรียมคำสั่งสำหรับบรรทัด 'n' ถัดไปให้ใช้ .,+n
  • บรรทัดตัวอย่างที่ใช้ "v" มีลักษณะดังนี้: '<,'>s/^/#/

2
ใช้โหมดบล็อกแทนได้ง่ายขึ้น ไปที่จุดเริ่มต้นของบรรทัดแรกเพื่อแสดงความคิดเห็น, ctrl-v, ลูกศรลงจนสุด, ตัวพิมพ์ใหญ่, #, หลบหนี หากต้องการลบความคิดเห็น: ctrl-v, ลูกศรลงจนสุด, x
brunch875

1

ใน emacs คุณสามารถทำเครื่องหมายพื้นที่ที่คุณต้องการแสดงความคิดเห็นและกดM-;(ซึ่งทำงานอยู่comment-dwim)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.