นี่คือคำสั่ง imake ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
imake - C ส่วนต่อประสานตัวประมวลผลล่วงหน้ากับยูทิลิตี้ make
เรื่องย่อ
ฉันทำ [ -Dกำหนด ] [ -Idir ] [ -Uกำหนด ] [ -Tเทมเพลต ] [ -f ชื่อไฟล์ ] [ -C ชื่อไฟล์ ] [
-s ชื่อไฟล์ ] [ -e ] [ -v ]
DESCRIPTION
ฉันทำ ใช้ในการสร้าง Makefiles จากแม่แบบ ชุดของ ซีพี ฟังก์ชันมาโคร และ a
ไฟล์อินพุตต่อไดเร็กทอรีที่เรียกว่า an อิมเมคไฟล์. ซึ่งช่วยให้สามารถพึ่งพาเครื่องได้ (เช่น
ตัวเลือกคอมไพเลอร์ ชื่อคำสั่งสำรอง และพิเศษ ทำ กฎ) ให้แยกออกจากกัน
จากการพรรณนาสิ่งของต่างๆ ที่จะสร้าง
OPTIONS
ตัวเลือกบรรทัดคำสั่งต่อไปนี้อาจถูกส่งผ่านไปยัง ฉันทำ:
-Dกำหนด
ตัวเลือกนี้จะถูกส่งต่อโดยตรงไปยัง ซีพี. โดยปกติจะใช้เพื่อตั้งค่าไดเร็กทอรี-
ตัวแปรเฉพาะ ตัวอย่างเช่น X Window System ใช้แฟล็กนี้เพื่อตั้งค่า ท็อปไดร์
ไปยังชื่อของไดเร็กทอรีที่มีส่วนบนของการกระจายคอร์และ
เคอร์ดีร์ กับชื่อของไดเร็กทอรีปัจจุบัน สัมพันธ์กับด้านบน
-Iไดเรกทอรี
ตัวเลือกนี้จะถูกส่งต่อโดยตรงไปยัง ซีพี. มักใช้เพื่อบ่งบอกถึง
ไดเร็กทอรีที่ ฉันทำ อาจพบไฟล์เทมเพลตและการกำหนดค่า
-Uกำหนด
ตัวเลือกนี้จะถูกส่งต่อโดยตรงไปยัง ซีพี. โดยปกติจะใช้เพื่อยกเลิกการตั้งค่าตัวแปร
เมื่อทำการดีบัก ฉันทำ ไฟล์การกำหนดค่า
-Tเทมเพลต
ตัวเลือกนี้ระบุชื่อไฟล์เทมเพลตหลัก (ซึ่งโดยปกติคือ
อยู่ในไดเร็กทอรีที่ระบุด้วย -I) ใช้โดย ซีพี. ค่าเริ่มต้นคือ
Imake.tmpl.
-f ชื่อไฟล์
อ็อพชันนี้ระบุชื่อของไฟล์อินพุตต่อไดเร็กทอรี ค่าเริ่มต้นคือ
อิมเมคไฟล์.
-C ชื่อไฟล์
ตัวเลือกนี้ระบุชื่อของไฟล์ .c ที่สร้างขึ้นในไฟล์ปัจจุบัน
ไดเร็กทอรี ค่าเริ่มต้นคือ Imakefile.c.
-s ชื่อไฟล์
ตัวเลือกนี้ระบุชื่อของ ทำ ไฟล์คำอธิบายที่จะสร้างแต่
ทำ ไม่ควรเรียก ถ้า ชื่อไฟล์ เป็นเส้นประ (-) ผลลัพธ์จะถูกเขียน
ไปยัง แย่. ค่าเริ่มต้นคือการสร้าง แต่ไม่ดำเนินการ a Makefile.
-e ตัวเลือกนี้บ่งชี้ว่า ฉันทำ ควรดำเนินการสร้าง Makefile.
ค่าเริ่มต้นคือปล่อยให้สิ่งนี้กับผู้ใช้
-v ตัวเลือกนี้แสดงว่า ฉันทำ ควรพิมพ์ ซีพี บรรทัดคำสั่งว่ามันคือ
ใช้เพื่อสร้าง Makefile.
วิธีการ IT WORKS
ฉันทำ จะเรียก ซีพี กับใด ๆ -I or -D แฟล็กที่ส่งผ่านบนบรรทัดคำสั่งและส่งผ่านชื่อ
ของไฟล์ที่มี 3 บรรทัดต่อไปนี้:
#define IMAKE_TEMPLATE "Imake.tmpl"
#define INCLUDE_IMAKEFILE
#รวม IMAKE_TEMPLATE
ที่ไหน Imake.tmpl และ อิมเมคไฟล์ อาจถูกแทนที่โดย -T และ -f ตัวเลือกคำสั่ง
ตามลำดับ
โดยทั่วไปแล้ว IMAKE_TEMPLATE จะอ่านในไฟล์ที่มีพารามิเตอร์ที่ขึ้นกับเครื่อง
(ระบุเป็น ซีพี สัญลักษณ์), ไฟล์พารามิเตอร์เฉพาะไซต์, ตัวแปรที่กำหนดไฟล์, a
ไฟล์ที่มี ซีพี ฟังก์ชันมาโครสำหรับสร้าง ทำ กฎเกณฑ์ และสุดท้ายคือ อิมเมคไฟล์
(ระบุโดย INCLUDE_IMAKEFILE) ในไดเร็กทอรีปัจจุบัน NS อิมเมคไฟล์ ใช้มาโคร
หน้าที่ระบุว่าควรสร้างเป้าหมายใด ฉันทำ ดูแลการผลิต
กฎเกณฑ์ที่เหมาะสม
ฉันทำ ไฟล์คอนฟิกูเรชันประกอบด้วยตัวแปรสองประเภท ได้แก่ ตัวแปร imake และ make
ตัวแปร ตัวแปร imake ถูกตีความโดย cpp เมื่อ ฉันทำ กำลังดำเนินการ โดยอนุสัญญา
เป็นกรณีผสม ตัวแปร make ถูกเขียนลงใน Makefile ในภายหลัง
ตีความโดย ทำ โดยข้อตกลงทำให้ตัวแปรเป็นตัวพิมพ์ใหญ่
ไฟล์กฎ (ปกติจะตั้งชื่อว่า Imake.กฎ ในไดเร็กทอรีการกำหนดค่า) มี a
ความหลากหลายของ ซีพี ฟังก์ชันแมโครที่กำหนดค่าตามแพลตฟอร์มปัจจุบัน
ฉันทำ แทนที่การเกิดขึ้นของสตริง ``@@'' ด้วยการขึ้นบรรทัดใหม่เพื่ออนุญาตมาโครที่
สร้างมากกว่าหนึ่งบรรทัดของ ทำ กฎ. ตัวอย่างเช่น มาโคร
#define program_target(โปรแกรม, รายการวัตถุ) @@\
โปรแกรม: objlist @@\
$(CC) -o $@ รายการวัตถุ $(LDFLAGS)
เมื่อถูกเรียกด้วย program_target(ฟู, ฟู1.โอ ฟู2.o) จะขยายเป็น
ฟู: foo1.o foo2.o
$(CC) -o $@ foo1.o foo2.o $(LDFLAGS)
ฉันทำ ยังแทนที่การเกิดขึ้นของคำว่า ``XCOMM'' ด้วยอักขระ ``#'' to
อนุญาตให้แสดงความคิดเห็นใน Makefile โดยไม่ทำให้เกิดข้อผิดพลาด ``คำสั่งที่ไม่ถูกต้อง'' จาก
พรีโปรเซสเซอร์
ซับซ้อนบ้าง ฉันทำ มาโครต้องสร้าง ทำ ตัวแปรท้องถิ่นสำหรับการเรียกใช้แต่ละครั้งของ
มาโคร บ่อยครั้งเนื่องจากค่าของพวกมันขึ้นอยู่กับพารามิเตอร์ที่ส่งไปยังมาโคร เช่น
สามารถสร้างตัวแปรได้โดยใช้ an ฉันทำ ตัวแปรของแบบฟอร์ม XVARdefnที่นี่มี n คือ
หลักเดียว ไม่ซ้ำใคร ทำ ตัวแปรจะถูกแทนที่ เหตุการณ์ภายหลังของ
ตัวแปร XVARใช้n จะถูกแทนที่ด้วยตัวแปรที่สร้างขึ้นโดยที่สอดคล้องกัน XVARdefn.
บนระบบที่ ซีพี ลดหลายแท็บและช่องว่างให้เป็นช่องว่างเดียว ฉันทำ พยายามที่จะ
นำแท็บที่จำเป็นกลับมา (ทำ จู้จี้จุกจิกมากเกี่ยวกับความแตกต่างระหว่างแท็บและ
ช่องว่าง) ด้วยเหตุนี้ โคลอน (:) ในบรรทัดคำสั่งจึงต้องมีเครื่องหมายแบ็กสแลช
(\)
ใช้ กับ DIE X หน้าต่าง ระบบ
ระบบ X Window ที่ใช้ ฉันทำ อย่างกว้างขวางขึ้นผ่านการเปิดตัว X11R6.9 ทั้งตัวเต็ม
สร้างภายในแผนผังต้นทางและซอฟต์แวร์ภายนอก X ได้ย้ายไปที่ GNU autoconf .แล้ว
และ automake สำหรับระบบบิลด์ใน X11R7.0 และรุ่นที่ใหม่กว่า แต่ยังคงรักษา imake
สำหรับสร้างโปรแกรมซอฟต์แวร์ภายนอกที่มีอยู่ซึ่งยังไม่ได้แปลง
ดังที่ได้กล่าวไว้ข้างต้น ตัวแปรพิเศษสองตัวคือ ท็อปไดร์ และ เคอร์ดิร์ มีการตั้งค่าให้อ้างอิง
ไฟล์ที่ใช้ชื่อพาธสัมพัทธ์ได้ง่ายขึ้น ตัวอย่างเช่น คำสั่งต่อไปนี้จะถูกสร้างขึ้น
โดยอัตโนมัติเพื่อสร้าง Makefile ในไดเรกทอรี lib/X/ (เทียบกับยอดของ
ที่มา):
% ../.././config/imake -I../.././config \
-ดีทอปเดียร์=..- -DCURDIR=./lib/X
เมื่อสร้างโปรแกรม X นอกแผนผังต้นทาง สัญลักษณ์พิเศษ ใช้ติดตั้งแล้ว ถูกกำหนด
และ ท็อปไดร์ และ เคอร์ดีร์ จะถูกละเว้น หากไฟล์การกำหนดค่าได้รับอย่างถูกต้อง
ติดตั้งสคริปต์ xmkmf(1) สามารถใช้
INPUT ไฟล์
นี่คือบทสรุปของไฟล์ที่อ่านโดย ฉันทำ ตามที่ X ใช้ การเยื้องแสดงว่าอะไร
ไฟล์รวมถึงไฟล์อื่น ๆ
ตัวแปรทั่วไปของ Imake.tmpl
site.def เฉพาะไซต์, BeforeVendorCF ที่กำหนดไว้
*.cf เฉพาะเครื่อง
*กฎไลบรารีที่ใช้ร่วมกันของ Lib.rules
site.def เฉพาะไซต์, AfterVendorCF ที่กำหนดไว้
กฎของ Imake.rules
ตัวแปรเฉพาะ Project.tmpl X
*ตัวแปรไลบรารีที่ใช้ร่วมกันของ Lib.tmpl
อิมเมคไฟล์
Library.tmpl กฎของห้องสมุด
กฎเซิร์ฟเวอร์ Server.tmpl
Threads.tmpl กฎแบบมัลติเธรด
โปรดทราบว่า site.def ถูกรวมสองครั้ง หนึ่งครั้งก่อน *.cf ไฟล์และครั้งเดียวหลังจากนั้น
แม้ว่าการปรับแต่งเว็บไซต์ส่วนใหญ่ควรระบุหลังจาก *.cf ไฟล์บางส่วนเช่น
ต้องระบุตัวเลือกคอมไพเลอร์ก่อนเพราะการตั้งค่าตัวแปรอื่น ๆ อาจ
ขึ้นอยู่กับพวกเขา
ครั้งแรก site.def ถูกรวมไว้ ตัวแปร BeforeVendorCF ถูกกำหนด และ
ครั้งที่สอง มีการกำหนดตัวแปร AfterVendorCF รหัสทั้งหมดใน site.def ควรจะอยู่ข้างใน
#ifdef สำหรับหนึ่งในสัญลักษณ์เหล่านี้
ใช้ imake ออนไลน์โดยใช้บริการ onworks.net