ฟังก์ชั่นตรวจสอบว่ามีไฟล์อยู่ใน GNU Make หรือไม่

GNU makefiles ปล่อยให้ธุรกิจขนาดเล็กของคุณใส่ซอร์สโค้ดที่สามารถปรับการคอมไพล์ของมันให้กับเครื่องไคลเอ็นต์ที่เฉพาะเจาะจงและตรวจจับปัญหาหรือการพึ่งพาซอฟแวร์ล่วงหน้าได้ การตรวจสอบเพื่อดูว่ามีไฟล์บางไฟล์อยู่ตรงกลางของฟังก์ชัน GNU หรือไม่และคุณสามารถเลือกจากหนึ่งในหลายวิธี
กฎระเบียบ
วิธีหนึ่งในการตรวจสอบว่ามีไฟล์อยู่ใน GNU makefile ของคุณหรือไม่เกี่ยวข้องกับระบบกฎในตัว รหัสด้านล่างของไวยากรณ์ "เป้าหมาย: ข้อกำหนดเบื้องต้นปกติ | คำสั่งซื้อเฉพาะสิ่งที่จำเป็นต้องมี" จะดำเนินการเฉพาะในกรณีที่ไฟล์หรือไฟล์ที่ระบุว่า "เป้าหมาย" ไม่ใหม่กว่าที่ระบุไว้ใน "ข้อกำหนดเบื้องต้นปกติ" และหากไฟล์ที่คุณต้องการ ระบุใน "คำสั่งซื้อเท่านั้นที่จำเป็นต้องมี" มีอยู่ หากคุณใช้ไวยากรณ์ "target: | order-only-prerequisites" และไม่ระบุไฟล์ใด ๆ ที่ด้านซ้ายของ "|" สัญลักษณ์จากนั้นโค้ดด้านล่างจะทำงานเฉพาะในกรณีที่ไฟล์หรือไฟล์ที่คุณระบุเป็น "คำสั่งซื้อเท่านั้นที่จำเป็นต้องมี" มีอยู่
ทดสอบฟังก์ชั่น
คำสั่ง "test -f" สามารถตรวจสอบว่ามีไฟล์ใดไฟล์หนึ่งอยู่หรือไม่ คำสั่งนี้ใช้ชื่อไฟล์เป็นอาร์กิวเมนต์จากนั้นส่งคืนค่าบูลีนเป็น "true" หากเส้นทางไฟล์ที่คุณผ่านคำสั่งนั้นมีอยู่และ "false" หากไม่มีอยู่ คุณสามารถรวมคำสั่งนี้เข้ากับคำสั่ง "if" และฟังก์ชั่นการควบคุมอื่น ๆ ที่คุณวางไว้ใน makefile เพื่อการควบคุมอย่างละเอียดทั้งการจัดการผลลัพธ์ใด ๆ
กำลังตรวจสอบไดเรกทอรี
เมธอด rules หรือคำสั่ง "test -d" ทำงานเหมือนกับคำสั่ง "test -f" จะส่งกลับค่าจริงหากพา ธ ที่คุณระบุเป็นอาร์กิวเมนต์เป็นไดเรกทอรีที่มีอยู่แทนที่จะตรวจสอบเพื่อดูว่าอาร์กิวเมนต์เป็นไฟล์หรือไม่ . หากคุณกำลังตรวจสอบการมีอยู่ของไดเรกทอรีที่ makefile ของคุณจะรวบรวมหรือสร้างไฟล์คำสั่ง "mkdir -p directory-name" จะพยายามสร้างไดเรกทอรีที่มีชื่อที่คุณระบุว่าเป็น "directory-name" เว้นแต่ว่า มันมีอยู่แล้ว อาร์กิวเมนต์ "-p" ป้องกัน mkdir จากการโยนข้อผิดพลาดที่ทำให้ผู้ใช้คิดว่ามีบางอย่างผิดพลาด จากนั้นคุณสามารถใช้ไดเรกทอรีในรหัส makefile ของคุณเพราะรู้ว่ามีไฟล์อยู่ - เพราะมันมีอยู่แล้วหรือเพราะ mkdir สร้างมันขึ้นมา
Makefile ที่แข็งแกร่ง
ระบบไคลเอนต์ต่าง ๆ จัดเก็บแพ็คเกจที่ซอฟต์แวร์ของคุณขึ้นอยู่กับเส้นทางไดเรกทอรีที่แตกต่างกันเล็กน้อย หากคุณสมมติว่ามีที่ตั้งเดียวลูกค้าของคุณจะได้รับ makefiles ที่บอกพวกเขาว่าพวกเขาต้องการแพคเกจซอฟต์แวร์ที่พวกเขามีอยู่แล้ว คุณสามารถลดปัญหานี้ได้โดยการค้นคว้าระบบต่าง ๆ ที่ใช้โดยฐานลูกค้าเป้าหมายของคุณและตรวจสอบให้แน่ใจว่า makefile ของคุณตรวจสอบตำแหน่งที่เป็นไปได้หลายแห่งสำหรับแพ็คเกจซอฟต์แวร์ที่ขึ้นต่อกัน