นี่คือคำสั่ง makeppinfo ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
makeppinfo -- สิ่งที่ makepp รู้เกี่ยวกับไฟล์
DESCRIPTION
?: - A: -NS,
--args-ไฟล์
--arguments-ไฟล์, D: -NS,
--วันที่,
--ถอดรหัสวันที่ F: -NS,
--บังคับ, H: -ชม,
--ช่วย, K: -เค
--คีย์ลิสต์,
--คีย์ M: $ ทำให้ PPINFOFLAGS, Q: -NS,
--เงียบ, T: -NS,
--สำรวจ, U: -ยู,
--จำไม่ได้, V: -วี
--รุ่น
makeppinfo ตัวเลือก [ไฟล์ ...]
เอ็มพีไอ ตัวเลือก [ไฟล์ ...]
Makepp จดจำข้อมูลโดยละเอียดเกี่ยวกับไฟล์ที่สแกนและ/หรือสร้างขึ้น สำหรับ
ไฟล์ที่สร้างขึ้นจะจดจำทุกสิ่งที่เกี่ยวข้องซึ่งรวมถึงการพึ่งพา
ข้อมูลนี้ถูกเก็บไว้ใน .makepp ไดเร็กทอรีย่อยตามไฟล์ที่เกี่ยวข้อง มัน
มีรูปแบบของคู่คีย์-ค่า ในบางกรณีค่าจะเป็นรายการของ .อีกครั้ง
คู่ที่เกี่ยวข้อง โดยทั่วไปจะเป็นลายเซ็นและไฟล์
หากทั้ง "ENV_DEPS" และ "ENV_VALS" แสดงขึ้น จะถูกรวมเป็นตารางสองคอลัมน์
หากทั้ง "DEP_SIGS" และ "SORTED_DEPS" แสดงขึ้น จะถูกรวมเป็นสองคอลัมน์
ตาราง (ในลำดับนี้ซึ่งให้เลย์เอาต์ที่ดีกว่า) การพึ่งพาแต่ละรายการมี "SIGNATURE"
ซึ่งเป็นเพียง "ประทับเวลา ขนาด" ใช้เพื่อตรวจสอบว่าต้องสแกนไฟล์ใหม่หรือไม่ สำหรับ
symlink ห้อยต่องแต่ง แทนที่จะเป็นลายเซ็นของ linkee ลายเซ็นของลิงค์คือ
กำหนดในลักษณะนี้ และ 0 นำหน้าเพื่อทำเครื่องหมายกรณีพิเศษนี้ ที่น่าสนใจ
ข้อมูลถูกเก็บไว้ในคีย์อื่นสำหรับลายเซ็นในตัวดังนี้:
· "C_MD5_SUM" สำหรับ "C" หรือ "c_compilation_md5"
· "MD5_SUM" สำหรับ "md5"
· "SHARED_OBJECT" สำหรับ "shared_object"
· "V_MD5_SUM" สำหรับ "verilog_synthesis_md5"
· "XML_MD5_SUM" สำหรับ "xml"
· "XML_SPACE_MD5_SUM" สำหรับ "xml_space"
รายการลายเซ็นเหล่านี้เป็นสาเหตุที่พบบ่อยที่สุดในการสร้างไฟล์ใหม่ ดังนั้นคุณอาจ
ชอบตรวจสอบว่าลายเซ็นที่เก็บไว้สำหรับการขึ้นต่อกันตรงกับปัจจุบันหรือไม่
"BUILD_SIGNATURE" ของไฟล์นั้น หากลายเซ็นและทุกอย่างอื่นตรงกัน นั่นคือ
พื้นฐานในการรับไฟล์จาก (หนึ่งใน) ที่เก็บของคุณหรือสร้างแคชหากพบ
ที่นั่น. รายละเอียดขึ้นอยู่กับวิธีการตรวจสอบบิลด์ที่เกี่ยวข้อง
คุณจะพบลายเซ็นสองประเภท: แบบง่ายประกอบด้วยสองเครื่องหมายจุลภาคคั่น
ซึ่งเป็นการประทับเวลาในรูปแบบระบบไฟล์ (วินาทีตั้งแต่ปี 1970) และขนาด
สำหรับบางไฟล์ makepp จะมีลายเซ็นอัจฉริยะที่เกี่ยวข้องเพิ่มเติมซึ่งก็คือ a
เข้ารหัส base64 (ตัวอักษร ตัวเลข เครื่องหมายทับและบวก) ผลรวม MD5 ของไฟล์ธรรมดาหรือไฟล์ที่แยกย่อย
เนื้อหา
คำสั่งนี้เป็นเครื่องมือแก้ไขข้อบกพร่องของ makepp บางส่วน รายการคีย์แตกต่างกันไปขึ้นอยู่กับว่า
ใช้เครื่องสแกน ตรวจสอบบิลด์ และลายเซ็น เพื่อให้เข้าใจผลลัพธ์อย่างถ่องแท้ คุณอาจต้อง
เพื่อดูซอร์สโค้ด ที่กล่าวว่ายังมีบางส่วนที่น่าสนใจโดยทั่วไป
ข้อมูลที่จะได้รับ
ตัวเลือกที่ถูกต้องคือ:
-A ชื่อไฟล์
--args-ไฟล์=ชื่อไฟล์
--อาร์กิวเมนต์-ไฟล์=ชื่อไฟล์
อ่านไฟล์และแยกวิเคราะห์ว่าเป็นช่องว่างที่ยกมา - และ/หรือขึ้นบรรทัดใหม่แยก
ตัวเลือก
-d
--วันที่
--ถอดรหัสวันที่
ในลายเซ็นง่าย ๆ นำหน้าตัวเลขที่ 1, วันที่-เวลาดิบ, กับมนุษย์
แบบอ่านได้ในวงเล็บ
-f
--บังคับ
แสดงข้อมูลแม้ว่าจะไม่ถูกต้องเนื่องจากไม่มีไฟล์หรือไฟล์ที่แก้ไข ในเรื่องนี้
กรณีที่คีย์ "SIGNATURE" ถูกแทนที่ด้วย "invalidated_SIGNATURE" และค่า
ระบุในวงเล็บว่าไฟล์นั้นถูกลบไปแล้วหรือไฟล์นั้นมีลายเซ็นอะไรอยู่
-?
-h
--ช่วยด้วย
พิมพ์ข้อมูลสรุปโดยย่อของตัวเลือกต่างๆ
-k รายการ
--คีย์=รายการ
--คีย์ลิสต์=รายการ
การขอ รายการ ระบุรูปแบบสไตล์เชลล์ที่คั่นด้วยช่องว่างอย่างน้อยหนึ่งช่อง (ด้วย [xyz], ?, *,
{a,bc,def}). อย่าลืมปกป้องสิ่งเหล่านี้จากเชลล์ของคุณด้วยการอ้างอิง เหล่านี้ตรงกัน
กับกุญแจ แต่ละรูปแบบอาจมีเครื่องหมายตกใจ ("!") หรือ a . นำหน้า
เครื่องหมายคาเร็ต ("^") เพื่อแยกคีย์ที่ตรงกันออกจากคีย์ที่เลือกก่อนแทนที่จะเพิ่ม
ให้กับการเลือก ถ้ารูปแบบแรกเริ่มต้นด้วยเครื่องหมายอัศเจรีย์ it
ทำงานบนปุ่มทั้งหมด
--keys='COMMAND CWD' # ถูกสร้างขึ้นอย่างไรและที่ไหน (สัมพันธ์กับไฟล์)
หากคุณต้องการเฉพาะชื่อไฟล์ (มีประโยชน์กับ "-t|--traverse") ให้เลือกคีย์ที่ไม่มีอยู่เช่น
"ไม่มี".
-q
--เงียบ
ไม่แสดงรายการไฟล์และชื่อคีย์ ทำซ้ำเพื่อละเว้นคำเตือน
-t
--สำรวจ
ส่งออกข้อมูลเดียวกันสำหรับแต่ละไฟล์ใน SORTED_DEPS ด้วย (เรียกซ้ำ if
ซ้ำ)
-u
--จำไม่ได้
ข้ามการอ้างอิงของไฟล์ที่กำหนด แต่แทนที่จะแสดงข้อมูลทั้งหมด
ไดเร็กทอรีที่เกี่ยวข้องจะแสดงเฉพาะไฟล์ที่ไม่ได้รับการจดจำสำหรับเป้าหมายเหล่านี้ NS
แนวคิดนี้จะช่วยให้คุณระบุไฟล์ที่ไม่ต้องการอีกต่อไป ค่อนข้างน่าแปลกใจนี้ will
รวม Makefiles จากไดเร็กทอรีเหล่านั้น เพราะสิ่งเหล่านี้ส่วนใหญ่ไม่ใช่a
การพึ่งพา.
การให้ตัวเลือกนี้สองครั้งจะเป็นการไปยังไดเร็กทอรีที่อยู่ห่างไกลซึ่งไม่ใช่เอาต์พุต
ค่อนข้างชอบ / usr / รวม.
-V
--รุ่น
พิมพ์หมายเลขรุ่น
ตัวอย่าง
ทั่วไป
วิธีการตรวจสอบแต่ละบิลด์จะบันทึกวิธีการดูสิ่งที่พวกเขาตัดสินใจ หา
เส้นทางของการพึ่งพาจะเหมือนกันในทุกกรณี ดังนั้นจึงแสดงไว้ที่นี่ ถ้าคุณสร้าง
ไปยังไดเร็กทอรีอื่น การค้นหาพาธของอินพุตจำเป็นต้องมีการแปลที่สัมพันธ์กัน
สู่ CWD เช่น แบบสั้นหรือแบบยาว:
makeppinfo --keys='CWD SORTED_DEPS' obj/bo
mppi -k'CWD SORTED_DEPS' obj/bo
วัตถุ/บ่อ:
CWD=../src
SORTED_DEPS=
ก่อนคริสต์ศักราช
inc/bh
/usr/bin/gcc
CWD เป็นไดเร็กทอรีที่สัมพันธ์กับไฟล์ จากตำแหน่งที่สร้างขึ้น ไดเร็กทอรีนั้นคือไดเร็กทอรีหนึ่ง
จากตำแหน่งที่เส้นทางสัมพัทธ์ทั้งหมดใน SORTED_DEPS เริ่มต้น ซึ่งหมายความว่าภายใต้เดียวกัน
ไดเร็กทอรีที่เรามีอินพุต src/bc และ src/inc/bh และผลลัพธ์ obj/bo. จาก
มุมมองของ โบ, อินพุตคือ ../src/bc และ ../src/inc/bh. ไม่เป็นไร
เราได้ให้เส้นทางญาติสำหรับ โบ, ข้อมูลที่แสดงจะเหมือนกัน, ถ้าเราก่อน
เปลี่ยนไปเป็น obj.
การขอ เหตุผล สำหรับ a สร้างใหม่
ในบางกรณี makepp อาจสร้างไฟล์ที่ดูเหมือนทันสมัยขึ้นใหม่ซ้ำแล้วซ้ำเล่า ถ้า
"makepplog" ไม่ได้ช่วยอะไรที่นี่ คำสั่งนี้ให้สถานะที่แน่นอนแก่คุณ:
makeppinfo -- สำรวจไฟล์บางไฟล์
mppi -t ไฟล์บางไฟล์
เมื่อสิ่งนี้เกิดขึ้นซ้ำแล้วซ้ำอีก ให้ออกคำสั่งนี้ก่อนและหลัง และเปรียบเทียบ
เอาท์พุท สิ่งที่แตกต่างคือสาเหตุของการสร้างใหม่
พิสูจน์ ความมั่นคง
บางครั้งคุณจะเปลี่ยน Makefiles ของคุณและสงสัยว่าพวกเขายังทำในสิ่งเดียวกันหรือไม่
นี่คือคำสั่งที่บอกคุณอย่างชัดเจนว่า makepp สร้างขึ้นอย่างไร ไฟล์บางไฟล์:
makeppinfo --traverse --traverse --keys='CWD COMMAND' somefile
mppi -ttk'CWD SORTED_DEPS' somefile
สิ่งนี้จะวนซ้ำผ่านการพึ่งพาทั้งหมดของ ไฟล์บางไฟล์ และบอกคุณในที่
ไดเร็กทอรีมันออกคำสั่งใด โดยเรียกใช้สิ่งนี้หลังจากสร้างเก่าและหลังจากสร้างใหม่
และเปรียบเทียบผลลัพธ์ คุณจะเห็นสิ่งที่เปลี่ยนแปลง
ใช้งานได้เหมือนกันสำหรับการทดสอบ makepp เวอร์ชันใหม่ แม้ว่าบางเวอร์ชันที่เก่ากว่าจะทำได้
จัดการช่องว่างในบรรทัดความต่อเนื่องของคำสั่งต่างกันและมีข้อผิดพลาดในการ sort
ซึ่งสามารถทำให้ไฟล์ออกมาในลำดับที่แตกต่างกันได้ หากเป็นกรณีนี้สำหรับ
คุณให้เชลล์รวบรวมอาร์กิวเมนต์ที่เรียงลำดับ:
makeppinfo --keys='CWD COMMAND' `makeppinfo --traverse --traverse --keys=none somefile|tr -d :|sort`
mppi -k'CWD SORTED_DEPS' `mppi -ttknone somefile|tr -d :|sort'
และพวกเรา
Makeppinfo จะดูที่ตัวแปรสภาพแวดล้อมต่อไปนี้:
$ทำให้PPINFOFLAGS
แฟล็กใดๆ ในตัวแปรสภาพแวดล้อมนี้จะถูกตีความว่าเป็นตัวเลือกบรรทัดคำสั่งก่อน
ตัวเลือกที่ชัดเจน คำพูดจะถูกตีความเหมือนใน makefiles
ใช้ makeppinfo ออนไลน์โดยใช้บริการ onworks.net