แนะนํา

ในโปรแกรม C โปรแกรมนั้น มักจะมีการแยกแฟ้มต้นทางและส่วนหัวหลายแฟ้ม เพื่อปรับปรุงระบบ, ความจุ, และความเร็วการรวม (FLT) การสร้าง [FLT] อัตโนมัตินี้เป็นการแนะนําความท้าทาย: เมื่อแฟ้มส่วนหัวมีการเปลี่ยนแปลง แฟ้มต้นทางต่าง ๆ ที่รวมเข้ากับแฟ้มต้นฉบับนั้นจะต้องทําการคอมไพล์ใหม่ การทําแฟ้มนี้ผิดพลาดไปหลายแฟ้ม ทําให้แฟ้มสร้างแฟ้มแบบ [FLT] อัตโนมัติและสร้างแฟ้มสร้างแฟ้มแบบ [FLT] ให้สามารถแก้ปัญหาการถอดเสียบและถอดความคุมโปรแกรมได้ โดยการสร้างแฟ้มและสร้างโพรเซสนี้จะทําการสร้างแฟ้มต้นฉบับให้เป็นตัวพิมพ์ใหญ่ ทําให้แฟ้ม C. เข้มงวดขึ้น, การสร้างแฟ้มแบบ C. การปรับปรุงแฟ้มแบบ C. เผยแพร่ข้อมูลแบบ Files, จะมีผลอย่างไร, การปรับปรุงแฟ้มแบบแฟ้มแบบ การแปลงข้อมูลแบบ อัตโนมัติ, ทําให้งานแบบ February, และแฟ้มได้ง่ายขึ้น, ทําให้งานสร้างแฟ้มได้ง่ายขึ้น, ทําให้สามารถสร้างแฟ้มได้ง่ายขึ้น, สร้างและลดความเร็วอัตโนมัติ, สร้างโครงสร้างและสร้างแฟ้มได้,

พินัยกรรม คือ อะไร?

สมุดที่อยู่ Makefile เป็นแฟ้มข้อความธรรมดา ที่กําหนดกฏเกณฑ์สําหรับการสร้างโครงการขึ้นมา โครงสร้าง [FLT: 0] สร้าง [FLT: ] โครงสร้างเหล่านี้อ่าน, checks file timetamps, และประมวลผลเฉพาะคําสั่งที่จําเป็นเพื่อให้โครงการดังกล่าวมาจนถึงปัจจุบันเท่านั้น หลักการง่าย: แต่ละกฏมี [FLT] ไฟล์ [FLT] [FTT] [3] ผลิต[FT] [FTIFFIF] ] ชิ้นส่วนที่เปลี่ยนแปลงเท่านั้น ซึ่งต้องสร้าง [FTIFFF] เปลี่ยนแปลงเฉพาะส่วนที่สร้าง [FTIFF] [FTIFF] ] บางส่วนเท่านั้น [FTIFTIFTIFE].

Makefiles เป็นส่วนหนึ่งของ University ตั้งแต่ 1970 และ GNU GNU FTIF G ก็เป็นมาตรฐานการลดความซับซ้อนของลินุกซ์และแมคคอปส์

การ เข้าใจ ขึ้น อยู่ กับ เรื่อง

ในโครงการ C การขึ้นต่อกันของแฟ้มนั้น ไม่จํากัดอยู่ [FLT: 0] แฟ้มต่าง ๆ ที่มาจากแหล่งย่อยต่าง ๆ มีแฟ้มแบบ [เช่น หัวจดหมาย, [FLT: 1] เป็นต้น หากหัวจดหมายถูกปรับเปลี่ยนแล้ว แฟ้มทั้งหมด (FLT: 2] ที่รวมเข้ากับแฟ้มต้องคอมไพล์เดียวกัน แฟ้มวัตถุที่สัมพันธ์กัน [FLT: 3] และตัวประมวลผลสุดท้ายจะขึ้นอยู่กับแฟ้มทั้งหมด

หมดอายุแล้ว

ในต้น gets Models โปรแกรมโปรแกรมโปรแกรมจะระบุเงื่อนไขต่าง ๆ ทั้งหมดด้วยตัวเอง วิธีนี้เปราะบาง: การลืมหัวจดหมายหมายถึงการสร้างแบบเก่า ในขณะที่รายการของตัวช่วยตั้งค่ามันมากเกินไป เลวร้ายกว่าเมื่อโครงการนั้นเพิ่มขึ้น รายการคู่มือต่าง ๆ ก็ไม่สามารถจัดการได้ วิธีแก้ปัญหาสมัยใหม่คือการสร้างการขึ้นซ้อนทับกันโดยอัตโนมัติ เปลี่ยนมันให้เป็นการรวมเข้ากับเครื่อง โดยนัย, configs

พินัยกรรม ทํา ให้ มี ความ สัมพันธ์ ที่ ดี กับ คน รุ่น แรก เป้า หมาย คือ อย่า สร้าง สิ่ง ที่ ไม่ จําเป็น ต้อง สร้าง ขึ้น ใหม่ และ สร้าง ทุก สิ่ง ใหม่ เสมอ นี่ เป็น สิ่ง สําคัญ ของ [FLT: 0] การ แก้ไข [FLT: 1) และ [FTT:2] ความ เหมาะสม [FLT] [FT] [FT] ความ เป็น ผู้ รับ ใช้ [FTT] ใน การ เพิ่ม จํานวน ผู้ ประกาศ ราช อาณาจักร ของ พระเจ้า ได้ รับ การ สนับสนุน จาก พระเจ้า

โครงสร้างพื้นฐานของแฟ้ม

ทั่วไป Makefile มีนิยาม, กฎ, และเป้าหมายปลอม นี่คือตัวอย่างที่น้อยที่สุดแต่ใช้ได้สําหรับโครงการที่มี [FLT: 4] และ:

CC = gcc
CFLAGS = -Wall -Wextra -O2

main: main.o utils.o
 $(CC) $(CFLAGS) -o main main.o utils.o

main.o: main.c
 $(CC) $(CFLAGS) -c main.c

utils.o: utils.c
 $(CC) $(CFLAGS) -c utils.c

clean:
 rm -f main main.o utils.o

เมคไฟล์นี้มีเป้าหมายอยู่ 4 อย่าง: [FLT: 7] (การประมวลผล), แฟ้มวัตถุ 2 ไฟล์ และเป้าหมายปลอม [FLT: 8]. สายเชื่อมโยงหลังการบอก [FLT: 0] สร้าง[FLT: 1) แฟ้มที่จะตรวจสอบก่อนที่จะตัดสินใจสร้างเป้าหมายใหม่.

เป้าหมายของโฟนี

เป้าหมายอย่างเช่น [FLT: 9] หรือ ไม่แสดงแฟ้ม. เพื่อป้องกัน[FLT: 0] สร้าง จากความสับสนในชื่อแฟ้ม, มันควรจะได้รับการประกาศเป็น FOLT:3].

.PHONY: clean all

ถ้าไม่มีนี่, ถ้าแฟ้มที่ชื่อ [FLT: 12] มีอยู่, [FLT: 0] ทํา จะพิจารณาว่า เป็นข้อมูลเพิ่มและข้ามสูตรไป.

การ ดู แล ความ จําเป็น ที่ ต้อง ใช้

คู่มือ Makefile ด้านบนมีข้อบกพร่องร้ายแรง: การติดต่อ [FLT: 13] บน [FLT: 14] ถูก] แต่สิ่งที่เกี่ยวกับส่วนหัว? ถ้า การเปลี่ยนแปลง [รวม] (ซึ่งรวมไปถึง] แต่กฎดังกล่าวจะขึ้นอยู่กับเพียง [FTT: 17]. การแก้ไขให้ผู้รวบรวมข้อมูลสามารถผลิตรายการจริงได้.

การขึ้นกับเครื่องโดยอัตโนมัติโดยใช้ GCC

GCC (และ CLang) สามารถสร้างข้อมูลการเชื่อมโยงได้โดยใช้ ตระกูลธง. การรวมกันของโครงการส่วนใหญ่นั้นถูกต้องที่สุดคือ :

  • [[FLT: 0]]]] – เขียนแฟ้มเชื่อมโยง (]] ระหว่างการรวมรายชื่อผู้ใช้เท่านั้น ที่กําหนดส่วนหัว (ไม่ใช่ส่วนหัวระบบ).
  • [FLT: 0]][FLT: 22] – ระบุชื่อของไฟล์ติดต่อ (PDF).
  • [[FLT: 0]]] – เพิ่มเป้าหมายปลอมสําหรับแต่ละหัว, ป้องกันความผิดพลาดเมื่อส่วนหัวถูกลบออกไป

นี่ คือ วิธี เชื่อม ต่อ อัตโนมัติ กับ การ ติด ต่อ กับ เมค ไฟล์:

CC = gcc
CFLAGS = -Wall -Wextra -O2 -MMD -MP
SRCDIR = src
OBJDIR = obj
SRCS = $(wildcard $(SRCDIR)/*.c)
OBJS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
DEPS = $(OBJS:.o=.d)

all: myprogram

myprogram: $(OBJS)
 $(CC) $(CFLAGS) -o $@ $^

$(OBJDIR)/%.o: $(SRCDIR)/%.c
 @mkdir -p $(OBJDIR)
 $(CC) $(CFLAGS) -c $< -o $@

-include $(DEPS)

.PHONY: all clean
clean:
 rm -rf $(OBJDIR) myprogram

คําอธิบาย:

  • [FLT: 25] เก็บรวบรวมแฟ้มทั้งหมด ในไดเรกทอรีต้นทาง
  • [FLT: 27] แปลงมันให้เป็นเส้นทางไฟล์วัตถุ (Phelp)
  • [FLT: 28]. แสดงรายการแฟ้มเชื่อมโยง (e.g., .
  • กฎรูปแบบ [FLT: 30] รวมแต่ละแฟ้ม [FLT: 31] และเนื่องจาก สร้างแฟ้ม เป็นผลข้างเคียง
  • เส้นตรง [FLT: 34] อ่านแฟ้มที่สร้างขึ้น [FLT: 35] เปลี่ยนมันเป็นแฟ้มจริง แบบ Makefiles แบบขีดเส้นประ ( ระงับความผิดพลาดเมื่อแฟ้ม [FLT: 37] ยังไม่มีอยู่ (e.g. oring on the first builds).

ตอนนี้ ถ้า ถูกดัดแปลง การขอตัวต่อ จะทําการคอมไพล์ (FLT:40) ใหม่โดยอัตโนมัติ เพราะ ไฟล์สําหรับ รวม [FTT:43] เป็นโครง คุณสามารถช่วยวิกิพีเดียได้โดยเพิ่มข้อมูล ดูเพิ่มที่โครงการวิกิกีฬา เหตุการณ์ที่เกิดขึ้นใน ค.ศ.

เทคนิกขั้นสูง

การ จัด การ เรื่อง ราว ให้ ขึ้น อยู่ กับ ความ เป็น จริง อย่าง ปลอด ภัย

เมื่อลบส่วนหัวออกไป แฟ้มที่ อาจยังอ้างอิงมัน, ก่อให้เกิด [FLT: 0] สร้าง [FLT: 1] เพื่อล้มเหลวด้วยข้อผิดพลาดที่สูญหาย โดยการใช้แฟล็ก [FLT: 45] จ่าหน้าบนธงนี้ โดยเพิ่มกฏที่หลอกลวงสําหรับแต่ละหัวกระดาษ หากหัวจดหมายหายไป (FLT: 2) จะใช้กฏปลอม (FLT: 3) แทน (ซึ่งไม่เป็นการทํา) และยังคงทําต่อไป)

รวมถึงแฟ้มอ้างอิงหลังจากการเปลี่ยนแหล่ง

อนุพันธ์อย่างหนึ่ง: หากแฟ้มต้นทาง เพิ่มหรือลบ แฟ้มที่เข้าคู่กับ [FLT: 47] จะต้องถูกสร้างขึ้นใหม่ เนื่องจากแฟ้ม เป็นแฟ้มชั่วคราวของวัตถุ [FLT: 0] สร้าง [FLT: 0] ขึ้น [FTT: 1] จะสังเกตเห็นเวลาที่มีการเปลี่ยนแปลง และสร้างใหม่ [FLT: FTCU] ซึ่งจะถูกสร้างขึ้นใหม่ [FT:49] เนื่องจากแฟ้มนี้ทํางานอีกครั้งโดยอัตโนมัติ เมื่อสร้างเสร็จเสร็จเสร็จ

ใช้ระเบียบเฉพาะพรีกราไซต์

บางครั้งคุณต้องมีไดเรกทอรีก่อนสร้าง แต่ไม่อยากให้มันทํางานซ้ําเติม

$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
 $(CC) $(CFLAGS) -c $< -o $@

$(OBJDIR):
 mkdir -p $@

นี่เพื่อให้แน่ใจว่าไดเร็กทอรีถูกสร้างก่อนทําการคอมไพล์ใด ๆ แต่การเปลี่ยนแปลงไดเรกทอรีเอง (เช่น แฟ้มใหม่ภายใน) จะไม่เรียกให้ทําการคอมไพล์ใหม่

กิจ ปฏิบัติ ที่ ดี ที่ สุด ใน เรื่อง การ เข้า ถึง ผู้ อื่น

  1. [FLT: 0] ใช้การติดต่ออัตโนมัติตั้งแต่วันที่ 1 แม้โครงการเดียว ก็เป็นนิสัยที่ดี มันค่าใช้จ่ายที่ไม่ต้องเสียอะไรและป้องกันความผิดพลาดในอนาคต
  2. [FLT: 0] เก็บแฟ้มเชื่อมโยงที่แยกออกจากแฟ้มต้นฉบับ [FLT: 1) ใส่ลงในแฟ้ม หรือ [FLT: 53] ไดเรกทอรี (FLT:54) นี้จะทําให้การทําความสะอาดง่ายขึ้นและหลีกเลี่ยงการรบกวนต้นแหล่ง
  3. [FLT: 0]. เผยแพร่แฟ้มที่สร้างขึ้น ตามกฏที่สร้างขึ้น. คําสั่ง [FLT: 1) เป็นดี แต่ตั้งมันตามกฏรูปแบบ ทําให้แน่ใจว่า[FTT:2] สร้าง คนแรกรู้วิธีสร้างแฟ้มวัตถุก่อนพยายามที่จะอ่าน [FLT: 57].
  4. [FLT: 0] ใช้เป้าหมายปลอมสําหรับทําความสะอาดบ้าน ] ] [FLT: ⁇ และ และ เป็นงานทั่วไป ออกเสียงกับ [FLLT:22) เสมอ. ประกาศมันกับ ).
  5. [FLT: 0] ตัวแปรการจําแนกธงของคอมโพเนนท์ แหล่งที่มาไดเร็คทอรี และรายการของแฟ้ม [[FLT: 1) นี้ทําให้ เมคเฟซสามารถข้ามโครงการและปรับแต่งได้ง่ายขึ้น
  6. [FLT: 0]. สืบค้นเมื่อแฟ้มสร้างแฟ้มของคุณ โดยเจตนาที่จะเปลี่ยนหัว ([FLT: 1) แก้ไขส่วนหัว ให้เรียก (FLT: 63] และยืนยันเฉพาะแฟ้มวัตถุที่ได้รับผลกระทบเท่านั้น ที่ถูกคอมไพล์ใหม่ ถ้าการสร้างใหม่เต็มรูปแบบเกิดผิดพลาดกับการติดตามผู้ติดเชื้อ
  7. [FLT: 0] ให้สร้างแฟ้มง่ายแต่ไม่เรียบง่ายกว่าความจําเป็น [FLT: 1) overlchoolering กับฟังก์ชันขั้นสูงอย่าง สามารถทําให้การดีบั๊ เริ่มต้นด้วยรูปแบบที่แสดงในบทความนี้; มันช่วยเพิ่มความทนทานให้กับหลายแฟ้มได้เป็นอย่างดี

ทรัพยากรภายนอก

เพื่อ ให้ ลึก ซึ้ง ยิ่ง ขึ้น ใน ความ เข้าใจ ของ คุณ จง พิจารณา ข้อ อ้างอิง ที่ เป็น ไป ตาม หลัก การ เหล่า นี้:

  • [FLT: 0] GNU Fual – คู่มือที่แน่นอนที่จะสร้างไวยากรณ์, ทําหน้าที่, และคุณสมบัติขั้นสูง.
  • [FLT: 0]] ตัวเลือกการประมวลผล GCC - เอกสารการ ] ]] ] และธงที่เกี่ยวข้องกัน (PDF: ⁇ ).
  • [FLT: 0]. เมคไฟล์ ทูอาล็อก โดยเชส แลมเบอร์ [FLT: 1) – หลักสูตรการสอนแบบปฏิบัติ, สืบค้นเมื่อใช้ข้อมูลจริงหลายกรณีในโลก

รูปแบบการวน

Mannition โปรแกรม C เชื่อมต่อกับ getchfiles ไม่ได้จําเป็นสําหรับโครงการใด ๆ ที่โตเกินระดับแฟ้มเดียว โดยการรวมรูปแบบเข้าไปด้วย (FLT:68) และระวังในการรวมแฟ้มที่สร้าง [FLT: 69] คุณสามารถสร้างระบบการสร้างที่เร็วและถูกต้องได้ เทคนิคที่แสดงที่นี่ จะกําจัดการติดตามด้วยตนเอง, ลดเวลา, และป้องกันการสร้างจุดบกพร่องที่เกิดจากการปล่อยของวัตถุที่ก่อตัวขึ้น เมื่อคุณเขียนรูปแบบเหล่านี้เข้าไป คุณจะไม่สามารถทําการเชื่อมโยงเข้ากับรายการการจัดการจัดการที่เหมาะสมได้อีกด้วย (TLT: [TL] เปลี่ยนแปลงเพียงแฟ้มเท่านั้น [TL] และรวมเข้ากับแฟ้มต่าง ๆ ที่ถูกปรับเปลี่ยน]