ภาษาอังกฤษภาษาฝรั่งเศสสเปน

Ad


ไอคอน Fav ของ OnWorks

makepp_incompatibilities - ออนไลน์ใน Cloud

เรียกใช้ makepp_incompatibilities ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง makepp_incompatibilities ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


makepp_incompatibilities -- ความไม่ลงรอยกันระหว่าง makepp และ GNU make

DESCRIPTION


Makepp ได้รับการออกแบบมาให้ใกล้เคียงกับ GNU make . มากที่สุด
(<http://www.gnu.org/software/make/manual/make.html>). เครื่องมืออัตโนมัติของ GNU
(<http://www.gnu.org/software/automake/manual/automake.html>), CMake
(<http://www.cmake.org/>), พรีเมค (http://industriousone.com/premake> และดูหมายเหตุ
ด้านล่าง) หรือระบบงานสร้างดั้งเดิมที่ทำด้วยมือควรสร้างได้ด้วย makepp นี่แหละ
คุณสามารถโยกย้ายโครงการได้อย่างง่ายดาย หรือถ้าไม่อยากสนุกไปกับมันทั้งหมด
ข้อดีของ makepp (เช่น เพื่อให้คนอื่นๆ ยังสามารถสร้างโครงการของคุณด้วย GNU make) ในขณะที่คุณ
กำไรจากข้อได้เปรียบด้านความน่าเชื่อถือสำหรับการพัฒนาของคุณ

อย่างไรก็ตาม เนื่องจากความแตกต่างในปรัชญา GNU make's หรือ POSIX make's บางส่วน
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) คุณสมบัติไม่สามารถ
ได้รับการสนับสนุน. บางส่วนยังไม่ได้ดำเนินการเพราะเราไม่มีเวลา ส่วนใหญ่
ความแตกต่างจาก GNU นั้นค่อนข้างเป็นเรื่องทางเทคนิคและไม่ค่อยทำให้เกิดปัญหา อนิจจา
วิธีแก้ปัญหาสำหรับข้อบกพร่องของการผลิตแบบดั้งเดิมนั้นซับซ้อนขึ้นเรื่อยๆ
และกำลังทำให้ makepp ลำบาก

โดยสรุปแล้ว หากไม่สร้างจากกล่อง ให้ลอง:

makepp -- ไม่เตือน makepp_simple_concatenation=1 makepp_percent_subdirs=1 \
--build-check=target_newer --last-chance-rules --no-remake-makefiles

หากทำได้สำเร็จ คุณสามารถลองกำจัดข้อโต้แย้งเหล่านั้นทีละข้อ แต่ถ้าล้มเหลว
ลองเพิ่ม:

--traditional-recursive-ทำ

หากยังล้มเหลว ระบบบิลด์จำเป็นต้องมีการปรับแต่งเพื่อร่วมมือกับ makepp สม่ำเสมอ
หากบางตัวเลือกที่อธิบายในที่นี้ทำให้บางสิ่งสร้างได้ ก็ยังแนะนำให้ปรับตัว
บางอย่างจึงเข้ากันได้ดีกับทั้งสองยี่ห้อ

พระเดช ข้อมูลเพิ่มเติม POSIX or GNU ทำ ความเข้ากันได้


ต่อไปนี้คือความเป็นไปได้ของบรรทัดคำสั่งในการทำให้ระบบบิลด์รุ่นเก่าทำงาน
โดยไม่ต้องดัดแปลง พวกเขาทำให้ makepp เลียนแบบพฤติกรรมของ GNU make ได้อย่างแม่นยำ

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--build-check=target_newer"
โดยค่าเริ่มต้น makepp จะพยายามสร้างเป้าหมายใหม่ทั้งหมดหากมีการขึ้นต่อกันใดๆ
เปลี่ยนตั้งแต่บิลด์ล่าสุด หรือหากคำสั่งเปลี่ยนไป (ดู makepp_build_check for
รายละเอียด). นี้เป็นปกติสิ่งที่คุณต้องการ บางครั้งคุณก็ไม่ต้องการเป้าหมาย
ให้สร้างขึ้นใหม่หากมีการดัดแปลงนอกเหนือจากการควบคุมของ makepp (เช่น โดยการแก้ไข
หรือโดยการรันโปรแกรมด้วยตนเองเพื่อสร้างไฟล์) คุณสามารถบังคับให้ makepp ใช้
อัลกอริธึม make แบบดั้งเดิม ซึ่งจะสร้างใหม่ก็ต่อเมื่อเป้าหมายใดที่ใหม่กว่า
การพึ่งพาโดยการเพิ่มตัวเลือกนี้ในบรรทัดคำสั่ง

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--dont-build=config.status"
มีแพ็คเกจที่พยายามกำหนดค่าตัวเองอัตโนมัติหรือทำอย่างอื่นซึ่ง gmake
ละเว้นเว้นแต่จะถูกขอให้ทำเช่น:

config.status : กำหนดค่า
./config.status -- ตรวจสอบอีกครั้ง

กำหนดค่า: configuration.in aclocal.m4
คอนเฟิร์มอัตโนมัติ

คนส่วนใหญ่ไม่ได้ติดตั้ง "autoconf" ดังนั้นทำทุกอย่างด้วย
กฎเช่นเดียวกับ makepp จะล้มเหลว ตัวเลือกนี้จะป้องกันสิ่งนั้น ถ้าคุณเข้าใจอะไร
ไม่ได้ที่จะสร้าง

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--โอกาสสุดท้าย-กฎ"
กฎเริ่มต้น (กฎรูปแบบที่ไม่มีการขึ้นต่อกันของรูปแบบ) ไม่ได้รับการสนับสนุนโดยปกติ
Makepp ยกตัวอย่างกฎทั้งหมดโดยยึดตามไฟล์ที่มีอยู่ เพื่อให้ทราบทุก
ไฟล์ที่สามารถสร้างได้ อนิจจาวิธีนี้ไม่ทราบวิธีการยกตัวอย่างรูปแบบ
กฎที่ไม่มีการพึ่งพารูปแบบ กลไก :last_chance ช่วยแก้ไขบางส่วนนั้น
ซึ่งดีพอสำหรับ makefiles รุ่นเก่า ตัวเลือกนี้ช่วยให้เปิดใช้งานได้ทั่วโลก

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--ไม่-เตือน"
สิ่งนี้ไม่ได้ปรับปรุงผลลัพธ์ Makepp จะเตือนหลายสิ่งหลายอย่าง
ซึ่งยูนิกซ์ดั้งเดิมยอมรับโดยไม่สะดุ้ง เพราะมี
วิธีที่ดีกว่าในการทำด้วย makepp หากคำเตือนเหล่านี้ทำให้คุณรำคาญ คุณสามารถปิดได้
ด้วยตัวเลือกนี้

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--ไฮบริด-recursive-make"
การเรียก make แบบเรียกซ้ำมักถูกมองว่าเป็นแนวทางปฏิบัติที่ไม่ปลอดภัย (ดู "Better
ระบบสำหรับการสร้างลำดับชั้น" ใน makepp เพื่อดูรายละเอียด) แต่สิ่งเหล่านี้พบได้ทั่วไปใน
makefiles ที่มีอยู่ Makepp รองรับ recursive make สำหรับความเข้ากันได้แบบย้อนหลัง สำหรับใหม่
makefiles จะดีกว่ามากถ้าใช้คำสั่ง "load_makefile" หรือโดยนัยของ makepp
กลไกการโหลด makefile

เพื่อที่จะสามารถใช้ repositories สำหรับการสร้าง Variant และเพื่อช่วยในการสร้าง recursive
การเรียกให้ปลอดภัยยิ่งขึ้น โดยปกติ makepp จะไม่เรียกตัวเองซ้ำๆ
แม้ว่าคุณจะบอกมันไป แทน กระบวนการย่อยสื่อสารกับกระบวนการหลัก และ
การสร้างจริงทำได้โดยกระบวนการหลัก

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

เป้าหมาย: การพึ่งพา
$(MAKE) -f other_makefile เป้าหมาย

ในกรณีนี้ makepp สังเกตว่ากำลังโหลด makefile ตัวที่ 2 และบ่น ด้วยตัวเลือกนี้
แต่จะถอยกลับไปสู่วิธีดั้งเดิมในการสร้างจากการสร้างไฟล์เพิ่มเติมใน
กระบวนการ makepp แยกกัน

หมายเหตุ: การโหลด makefiles หลายไฟล์ในทางเทคนิคจะไม่มีปัญหา แต่โดยปกติแล้วจะมีไฟล์
ชื่อเป้าหมายปลอมเหมือนกัน การแยกส่วนนั้นออกจากกันจะหมายถึงการออกแบบใหม่ของ makepp
ภายใน อย่างไรก็ตาม สิ่งนี้จะได้ผล แต่ไม่เทียบเท่า:

เป้าหมาย: การพึ่งพา
cd subdir && $(MAKE) -f other_makefile targets

ความเข้ากันได้ ผ่านทาง ตัวเลือก: "--ดั้งเดิม-recursive-make"
บางครั้งตัวเลือกก่อนหน้านี้ไม่เพียงพอ โดยเฉพาะอย่างยิ่งถ้าการเรียกซ้ำใช้
ตัวเลือกที่ขัดแย้งกัน Makepp ใช้ตัวเลือกโกลบอลชุดเดียว ดังนั้นซับเมคจึงไม่ใช้
ได้รับอนุญาตให้แก้ไขได้ เนื่องจากจะเกี่ยวข้องกับ makefile อื่นๆ ด้วย

การเพิ่มตัวเลือกนี้ในบรรทัดคำสั่ง มีผลข้างเคียงที่ไม่พึงประสงค์ดังต่อไปนี้:

· Recursive ทำให้ไม่ดำเนินการภายในแบบขนาน แม้ว่าพาเรนต์จะทำ
ต่างจาก gmake ตรงที่ไม่มีการประสานงานโดยรวมของจำนวนกระบวนการ นี่จะ
ไม่ถูกนำไปใช้งานเพราะวิธีการทำงานนี้ไม่ใช่เป้าหมายการออกแบบของ makepp

· กระบวนการสร้างแบบเรียกซ้ำไม่ทราบอะไรเกี่ยวกับที่เก็บ

· แต่ละกระบวนการสร้างแบบเรียกซ้ำจะสร้างล็อกไฟล์ของตัวเอง ในไดเร็กทอรีจะถูกเรียกใช้
ใน แทนที่จะสร้างไฟล์บันทึกหนึ่งไฟล์สำหรับบิลด์ทั้งหมด

· เนื่องจาก makepp มักจะสร้างมากกว่า makepp แบบเดิมๆ ที่เห็นว่าจำเป็น และเนื่องจากหลายๆ อย่าง
สร้างระบบให้เรียกซ้ำในทุกทิศทาง นี้อาจนำไปสู่ไม่มีที่สิ้นสุด
การเรียกซ้ำ Makepp จะดึงเบรกหลังครบ 50 รอบแล้วจะบอกวิธีเพิ่มให้
ว่าในกรณีที่คุณมีรังลึกจริงๆ

แม้จะมีตัวเลือก "--traditional-recursive-make" ตัวแปรสภาพแวดล้อม
ไม่ได้ตั้งค่า "MAKEOVERRIDES" และ "MFLAGS" และละเว้น ดังนั้น makefiles ที่ขึ้นอยู่กับ
เหล่านั้นจะไม่ทำงาน

A พรีเมค สร้าง Makefile เป็นเพียงกระดาษห่อที่ตลกสำหรับการร้องขอย่อยในที่เดียวกัน
ไดเร็กทอรี หากคุณมีเป้าหมายโครงการ XYZ มันจะมีเส้นเหมือน

@${MAKE} --no-print-directory -C -f XYZ.make

ในกรณีนี้ คุณสามารถหลีกเลี่ยงตัวเลือก "--traditional-recursive-make" ได้โดยเรียกใช้
makepp ด้วยว่า "-f XYZ.ทำ" ตัวเลือก

ความเข้ากันได้ ไม่มี ตัวเลือก: "--งาน=n"
makefiles ดั้งเดิมบางครั้งจะไม่แสดงรายการการพึ่งพาทั้งหมด ขึ้นอยู่กับลำดับของ
การดำเนินการเพื่อให้ทันเวลา ในสถานการณ์เช่นนี้ makepp อาจเรียกกฎมาก่อนได้
มีการพึ่งพาอาศัยกันทั้งหมด แล้วผลลัพธ์อาจจะดีขึ้นด้วยน้อยหรือไม่มี
การดำเนินการแบบขนาน

ความเข้ากันได้ ผ่านทาง ตัวแปร: "makepp_simple_concatenation=1"
การแทนที่แบบ Rc เป็นวิธีเริ่มต้นที่ makepp ทำการแทนที่ตัวแปรลงใน text
สตริงเพราะมันไม่ค่อยทำลาย makefile รุ่นเก่าและมักจะมีประโยชน์ใน new
makefiles อย่างไรก็ตาม มันทำให้เกิดความไม่ลงรอยกันเป็นครั้งคราวในการแทนที่
ตัวแปรที่ไม่ได้ล้อมรอบด้วยช่องว่าง ตัวอย่างเช่น,

INCLUDE_PREFIX := -I/some/include/dir -I
รวม:= $(INCLUDE_PREFIX)/other/include/dir

จะตั้งค่า "INCLUDES" เป็น "-I/some/include/dir/other/include/dir -I/other/include/dir" ถ้า rc-
เปิดใช้งานการแทนที่สไตล์ในขณะที่ GNU จะตั้งค่าเป็น
"-I/some/include/dir -I/other/include/dir". เช่น เมื่อรวบรวม Redis 2.6.5 จะพยายาม
เรียกใช้ "printfgcc" การต่อกันที่ตลกของสองคำสั่งดังกล่าวเป็นข้อบ่งชี้ที่ชัดเจนว่า
ตัวแปรนี้จำเป็นต้องถอยกลับเพื่อสร้างความหมาย

นอกจากนี้ยังมีความไม่ลงรอยกันในการจัดการช่องว่างในตัวแปร:

โมฆะ :=
T := -o $(null) # T มี -o ตามด้วยช่องว่างหนึ่งช่อง
OUTFILE = $(T)ไฟล์ออก

จะตั้งค่า "OUTFILE" เป็น "-ooutfile" หากเปิดใช้งานการแทนที่ rc-style ในขณะที่ GNU สร้าง
จะตั้งค่าเป็น "-o outfile"

ความเข้ากันไม่ได้ทั้งสองนี้จะถูกลบออกโดยการตั้งค่า "makepp_simple_concatenation"
ตัวแปร. อย่างไรก็ตาม โปรดทราบว่าถึงแม้จะใช้ "makepp_simple_concatenation" makepp still
ถือว่าช่องว่างที่เข้ากันไม่ได้ในบางสถานการณ์:

T := -o # อย่าลบความคิดเห็นนี้

GNU สร้างชุด "T" ให้มี "-o" ตามด้วยช่องว่างในขณะที่ makepp แยก
พื้นที่ต่อท้ายอยู่แล้ว หากคุณต้องการพื้นที่ต่อท้าย คุณต้องตั้งค่า
"makepp_simple_concatenation" และตั้งค่า "T" โดยใช้เทคนิคที่เกี่ยวข้องกับ dummy
ตัวแปรเช่น "null" ดังที่แสดงด้านบน

วิธีแก้ปัญหา ตัวเลือก "--no-remake-makefiles"
โอเพ่นซอร์สทั่วไปต้องการการเรียก "configure" เพื่อสร้าง makefiles แต่แล้วสิ่งเหล่านี้
makefiles สามารถมีกฎในการสร้าง makefile ใหม่ได้โดยการเรียกคำสั่งบางอย่าง Makepp will
ปฏิบัติตามอย่างมีความสุขและปรับปรุงตามกฎ แต่บางครั้งก็เป็นอันตราย ดังนั้น
เพียงแค่ข้ามมัน

ความเข้ากันได้ ผ่านทาง ตัวแปร: "makepp_percent_subdirs=1"
โดยค่าเริ่มต้น "%" ในกฎรูปแบบไม่ตรงกับไดเรกทอรี ซึ่งหมายความว่ากฎเช่น
นี้:

%.o: %.ค
$(CC) $(CFLAGS) -c $(อินพุต) -o $(เอาต์พุต)

จะไม่ถูกนำไปใช้กับไฟล์เช่น "../shared/xyz.c" หากคุณต้องการให้ตรงกับไฟล์ใน
ไดเรกทอรีย่อยด้วย จากนั้นตั้งค่าตัวแปร "makepp_percent_subdirs=1" บนบรรทัดคำสั่ง
หรือใกล้กับจุดเริ่มต้นของ makefile

ความเข้ากันได้ ผ่านทาง สิ่งแวดล้อม ตัวแปร: $MAKEPP_IGNORE_OPTS
บางครั้งการเรียกซ้ำแบบเดิมผ่านตัวเลือกที่ makepp ไม่เข้าใจ
หวังว่าตัวเลือกนี้ไม่สำคัญ แต่จะป้องกันไม่ให้ makepp ทำงาน ด้วยสิ่งนี้
ตัวแปรสภาพแวดล้อมคุณสามารถขอให้ makepp ละเว้นตัวเลือกบางอย่างอย่างเงียบ ๆ มูลค่า
จะเป็นรายการตัวเลือกที่คั่นช่องว่าง ซึ่งสามารถมีได้ 4 แบบ คือ

--ยาว=x
ตัวเลือกยาวที่คาดหวังการโต้แย้ง ความจริงข้อนี้จะต้องประกาศผ่านเท่ากับ
เครื่องหมาย แม้ว่าการใช้งานจริงอาจคั่นด้วยช่องว่าง อาจเป็น "--long=bla" หรือ
"--ยาว bla".

--ยาว
ตัวเลือกยาวโดยไม่มีข้อโต้แย้ง

-sx ตัวเลือกสั้น ๆ ที่คาดหวังการโต้แย้ง ข้อเท็จจริงนี้ต้องประกาศโดยเพิ่ม
บางอย่างหลังตัวเลือกโดยตรง แม้ว่าการใช้งานจริงอาจแยกจากกันด้วย
ช่องว่าง ไม่ว่าจะเป็น "-sbla" หรือ "-s bla"

-s ตัวเลือกสั้น ๆ โดยไม่มีข้อโต้แย้ง

เช่นแทนที่ตัวเลือก -R ของ makepp ทีละรายการโดยไม่มีข้อโต้แย้งและยอมรับการดีบักของ gmake
ตัวเลือกที่มีอาร์กิวเมนต์:

ส่งออก MAKEPP_IGNORE_OPTS='-R --debug=x'

เข้ากันไม่ได้ ที่ ต้องการ Makefile การเปลี่ยนแปลง


· Makefiles ที่เรียกใช้ makepp อย่างชัดแจ้งจากการสร้างทุกอย่างเอง
"ExtUtils::Maker" ของ Alas Perl ยอมรับรูปแบบที่สองของสองรูปแบบต่อไปนี้
ข้อผิดพลาดนี้เป็นเวอร์ชัน 6.56 (Perl 5.12.1):

ย่อย:
ซีดีย่อย; ทำ

MAKE = ทำให้

· การตั้งค่าตัวแปร "VPATH" เป็นค่าบางค่าโดยปริยายจะเรียก "ค่า vpath %" "วีพัทธ์"
คำสั่งถูกจำลองด้วยกลไกการเก็บข้อมูล ดังนั้นที่ gmake ทดแทน
เส้นทางไปยังไฟล์ที่พบใน vpath makepp จะเชื่อมโยงเป็นสัญลักษณ์แทน
ที่จำเป็น ดังนั้น makepp จะจัดเตรียมสตริงที่ไม่ได้แก้ไข ซึ่งมักจะเป็น
ไม่ใช่ปัญหา.

ไม่รองรับเป้าหมายใน vpath (Gmake จะพิจารณาว่าใหม่กว่า
การอ้างอิงของพวกเขา แต่ถ้าไม่ใช่ เป้าหมายจะถูกสร้างขึ้นใหม่ในไดเร็กทอรีปัจจุบัน
-- ค่อนข้างไม่สอดคล้องกัน) ไม่รองรับการยกเลิกการตั้งค่า vpaths

· กฎรูปแบบที่ปรากฏในภายหลังใน makefile จะแทนที่กฎที่มีอยู่ก่อนหน้านี้
นี่คือการย้อนกลับจาก GNU make

· ชุดของกฎโดยนัยในตัวค่อนข้างแตกต่างจากกฎสำหรับ GNU
แม้ว่าชื่อตัวแปรจะเข้ากันได้เป็นส่วนใหญ่ กฎในตัวควร
คอมไพล์โปรแกรม C/C++/Fortran ได้สำเร็จ และที่จริงแล้วอาจเดาได้ว่า
ห้องสมุดที่เหมาะสมในบางกรณีด้วย รองรับ Modula-2 และ RatFor และของหายากอื่นๆ
ไม่มีภาษาโดยเจตนาเพราะฉันยังคงประสบปัญหากับGNU
กฎเกณฑ์เมื่อฉันนำส่วนขยายของภาษาเหล่านั้นไปใช้ซ้ำโดยไม่ได้ตั้งใจ

· คำนำหน้าการดำเนินการของ "+" จะถูกละเว้นโดยไม่โต้ตอบ

· ไม่รองรับสมาชิกที่เก็บถาวร และตัวแปรอัตโนมัติที่เกี่ยวข้องก็เช่นกัน
$%, "$(%D)" และ "$(%F)"

· ไม่มีการสนับสนุน SCCS

· ช่องว่างนำหน้าและต่อท้ายในการมอบหมายตัวแปรจะถูกละเว้น (แม้ว่า
ช่องว่างตามด้วยความคิดเห็น) สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการจัดการช่องว่าง
ความเข้ากันไม่ได้ โปรดดู "ช่องว่างในตัวแปร" ใน makepp_variables

· Makepp จะไม่พยายามสร้างไฟล์ใหม่ที่มาพร้อมกับคำสั่ง "include" เว้นแต่
makefile มีกฎสำหรับการสร้างก่อนที่จะเห็นคำสั่ง include
(อย่างไรก็ตาม มันจะพยายามสร้าง makefile ขึ้นมาใหม่เอง) ซึ่งปกติจะใช้สำหรับ
การจัดการรวมถึงการขึ้นต่อกันของไฟล์ และไม่มีประโยชน์กับ makepp เนื่องจากคุณไม่ได้
ต้องทำอย่างนั้นอยู่แล้ว

· ตัวแปร "SHELL" ถูกละเว้นบางส่วนในขณะนี้ Makepp ใช้เสมอ bin / sh /
เว้นแต่ /usr/xpg4/bin/sh or /sbin/xpg4/sh พบหรือเว้นแต่คุณจะส่งออก "SHELL"
ตัวแปรใน makefile ของคุณ แต่ถ้าคุณทำ parser คำสั่งอาจไม่เต็มที่
ทำความเข้าใจว่าคำสั่งเชลล์ของคุณทำอะไร บน Windows Strawberry หรือ ActiveState Perl
คุณต้องตั้งค่าตัวแปร SHELL ของคุณแทน ก่อน โทร makepp.

· การพึ่งพาสิ่งใดๆ บน Makefile ยังคงใช้งานได้ แต่โดยปกติไม่จำเป็น
โดยปกติจะใช้เพื่อบังคับให้สร้างใหม่เมื่อตัวเลือกการคอมไพล์เปลี่ยนไป Makepp รู้
เมื่อคำสั่ง build เปลี่ยนไปโดยไม่มีอะไรพิเศษใน makefile; มันเก็บ
นี้แบบไฟล์ต่อไฟล์ หากคุณเปลี่ยน makefile มันจะรู้ว่าตัวไหน
ไฟล์ต้องมีการคอมไพล์ใหม่

· ไฟล์ระดับกลางจะไม่ถูกลบ (เพราะ makepp ยืนกรานที่จะมีไฟล์ทั้งหมด
วันที่จะเหมือนกับในบิลด์ล่าสุด ไฟล์ระดับกลางทั้งหมดต้องเป็น
ปัจจุบันหรือมิฉะนั้นจะสร้างใหม่) ไม่มีสถานะพิเศษตาม
ไฟล์ระดับกลาง

· เป้าหมายพิเศษเพียงเป้าหมายเดียวที่รองรับคือ ".PHONY" และ ".SUFFIXES" บางส่วน NS
ที่เหลือจะถูกกลืนเข้าไป

โดยเฉพาะอย่างยิ่ง GNU make มีเป้าหมายพิเศษดังต่อไปนี้:

.คำต่อท้าย
Makepp ละเว้น ".SUFFIXES" ยกเว้นกรณีพิเศษของ ".SUFFIXES" ที่ไม่มี
การพึ่งพาเช่นนี้:

.คำต่อท้าย:

ซึ่งบอกไม่ให้โหลดกฎเริ่มต้นใด ๆ

.ระดับกลาง, .ระดับมัธยมศึกษา, .มีค่า
ไม่มีสถานะพิเศษตามไฟล์ระดับกลาง ดังนั้นเป้าหมายเหล่านี้จึงไม่
มีความหมาย

.ไม่สนใจ
เป้าหมายนี้จะถูกละเว้น หากคุณต้องการละเว้นข้อผิดพลาด ให้ใส่คำว่า "ignore_error"
(หรือเครื่องหมายลบ) หน้าคำสั่งที่สถานะการออกจะถูกละเว้น

.เงียบ
เป้าหมายนี้จะถูกละเว้น หากคุณต้องการให้คำสั่งไม่สะท้อน ให้ใส่คำว่า "noecho"
(หรืออักขระ "@") หน้าคำสั่งที่ไม่ควรสะท้อน
หรือใช้ตัวเลือก "--เงียบ" เพื่อ makepp

.DELETE_ON_ERROR
.EXPORT_ALL_VARIABLES
.ไม่มีการส่งออก
.POSIX
.ค่าเริ่มต้น
เป้าหมายเหล่านี้ไม่ได้รับการสนับสนุนและถูกเพิกเฉย

· ปัจจุบัน GNU ทำให้ฟังก์ชัน "eval", "flavor" และ "value" ไม่รองรับ คุณ
สามารถบรรลุสิ่งเดียวกันกับ eval อย่างตรงไปตรงมามากขึ้นด้วย "$[...]"
การขยายตัวแปรหรือฟังก์ชัน

· ไม่รองรับกฎโคลอนคู่อย่างสมบูรณ์ (พวกเขาไม่สามารถ: ในกระบวนทัศน์ของ makepp
ไม่สามารถอัปเดตเป้าหมายได้มากกว่าหนึ่งวิธี) ปัจจุบันแต่ละวิธีต่อเนื่องกัน
กฎโคลอนคู่สำหรับเป้าหมายที่กำหนดเพียงต่อท้ายสตริงคำสั่งและการพึ่งพา
รายการไปยังสตริงคำสั่งและรายการการพึ่งพาสำหรับเป้าหมายนี้ ตัวอย่างเช่น ถ้าคุณ
เขียนสิ่งนี้:

ก :: ข
&cat b -โอ๋

# ต่อมาใน makefile ของคุณ:
ก :: ค
&cat c -o >>a

มันคือ เผง เหมือนกับที่คุณเขียน

ก : bc
&cat b -โอ๋
&cat c -o >>a

นี่ไม่ใช่สิ่งที่มีไว้สำหรับกฎโคลอนคู่ และจะไม่เป็นเช่นนั้นเสมอไป
ได้ แต่ใช้ได้กับเป้าหมายอย่าง "สะอาด" หรือทุกอย่างที่
ExtUtils::MakeMaker ใส่ลงใน makefiles อย่าหวังพึ่งสิ่งอื่นใด
กว่า makefiles ดั้งเดิม

· ฟังก์ชัน "$(wildcard )" ไม่เพียงจับคู่ไฟล์ที่มีอยู่เท่านั้น แต่ยังจับคู่ไฟล์ซึ่ง
ยังไม่มี แต่มีกฎซึ่งเมคพเห็นในขณะนั้น
ฟังก์ชัน "$(wildcard )" ถูกประเมิน

· รองรับคำสั่ง "define" แต่การจัดการ "@" นำหน้าเสร็จสิ้น
แตกต่างกัน ขณะนี้อยู่ใน makepp "@" หน้าตัวแปรที่มีหลายบรรทัด
ค่าจะระงับเสียงสะท้อนของบรรทัดแรกเท่านั้น ตัวอย่างเช่น,

กำหนดเส้นเสียงสะท้อน
&echo line1 -o $@
&echo line2 -o>>$@
เอนเดฟ

x:
@$(เสียงสะท้อน)

จะไม่ระงับการพิมพ์ "&echo line2" เหมือนที่ทำใน GNU มันจะเท่านั้น
ระงับการพิมพ์ "&echo line1"

· Makepp ไม่รองรับตัวแปรสภาพแวดล้อมต่อไปนี้ (ไม่ได้ตั้งค่า
และมันก็ละเลยพวกเขา):

เปลี่ยนโฉม
เอ็มแฟลกส์

เข้ากันไม่ได้ in ใบสั่ง of การแสดงออก การขยายตัว
· ใน makepp การดำเนินการของกฎจะถูกขยายก่อนที่จะรับประกันการขึ้นต่อกันทั้งหมด
ได้ถูกสร้างขึ้น คุณสามารถแก้ไขปัญหานี้ได้โดยเปลี่ยนกฎดังนี้:

foo: บาร์
genfoo < $ (แถบเปลือกแมว)

สำหรับสิ่งนี้:

foo: บาร์
genfoo < `แมวบาร์`

หรือสิ่งนี้ซึ่งจะทำให้ไฟล์ในระหว่างการขยาย:

foo: บาร์
genfoo < $(&cat $(สร้างแถบ))

นี่เป็นที่นิยมกว่าที่นี่เพราะไฟล์ที่อยู่ใน บาร์ ก็ยังเป็นที่พึ่งของสิ่งนี้
กฎและตอนนี้ makepp สามารถตรวจจับได้เมื่อวิเคราะห์การเปลี่ยนเส้นทางด้วยคำศัพท์

· แม้ว่าฉันจะไม่เคยเห็นสิ่งนี้ใช้ แต่ GNU ทำให้สิ่งต่อไปนี้:

โคลอน = :
a$(โคลอน) b
ก้อง $^

Makepp ขยาย "$(เครื่องหมายโคลอน)" สายเกินไปที่จะใช้งานได้ อย่างไรก็ตามมันเสนอ
ไวยากรณ์ "$[colon]" ทางเลือก ซึ่งทำได้มากกว่าที่ GNU สร้าง เพราะมันคือ
ขยายตัวเร็วมาก

"$ (ทำ)" อาจ ประกอบด้วย ช่องว่าง
ใน makepp ที่ถอนการติดตั้งหรือหากแพลตฟอร์มไม่รองรับการเริ่มสคริปต์ Perl
ด้วยเลขมหัศจรรย์หรือด้วย "--traditional-recursive-make" ตัวแปรนี้จะรวมอย่างน้อย
หนึ่งช่องว่าง นั่นไม่ใช่ปัญหาเมื่อใช้เป็นคำสั่ง แต่เมื่อผ่านมันไปเป็น
พารามิเตอร์ที่ไม่ได้ใส่เครื่องหมายคำพูดของสคริปต์ (ตามที่ระบบสร้าง Perl 5.14.0 ทำ) มันจะฉีกออก
แยกออกเป็นพารามิเตอร์ต่าง ๆ ทำให้เกิดความสับสน พารามิเตอร์จึงปลอดภัยกว่า
อ้างเป็น '$ (MAKE)' ซึ่งไม่ทำลายความเข้ากันได้ย้อนหลัง

เฉพาะเป้าหมาย ที่ได้รับมอบหมาย ทำไม่ได้ เผยแพร่
ตัวแปรเฉพาะเป้าหมายของ Makepp นั้นแตกต่างจาก GNU เล็กน้อยเนื่องจากพวกมัน
ใช้กับกฎสำหรับไฟล์เดียวที่กล่าวถึงเท่านั้น ไม่ใช้กับกฎของไฟล์รุ่นก่อน ดู
การมอบหมายงานเฉพาะเป้าหมาย

วงเล็บ or วงเล็บปีกกา ทำไม่ได้ รัง
Makepp สิ้นสุดนิพจน์ที่วงเล็บหรือวงเล็บปีกกาที่ตรงกันครั้งแรก แทนสิ่งนี้

$(somefunction ... ( ) ...) # GNU สร้างสไตล์

คุณต้องใช้อย่างใดอย่างหนึ่งเหล่านี้

${somefunction ... ( ) ...} # GNU ทำให้เข้ากันได้
$((somefunction ... ( ) ...)) # นามสกุล Makepp

สิ่งนี้อาจจะได้รับการแก้ไขในเวอร์ชัน 2.1 อาจเป็นทางเลือก

ผู้เยาว์ จุด
การพึ่งพารูปแบบไม่ตรงกับเป้าหมายปลอม
%.ก: %.ข; ...
$(xb ปลอม): ; ... # ไม่ได้ให้วิธีการสร้าง xa

ความคิดเห็นไม่มีบรรทัดต่อเนื่อง
# นี่คือ \
ไม่ใช่ความคิดเห็น 2 บรรทัด

คำสั่ง เส้น เข้ากันไม่ได้


Makepp รองรับตัวเลือกบรรทัดคำสั่งที่มีประโยชน์มากกว่าสองสามตัวเลือกของ makepp อย่างไรก็ตาม ต่อไปนี้
ไม่รองรับ:

-d หรือ --debug
-NS -
ออบเจ็กต์ makefile ภายในของ Makepp เชื่อมโยงกับออบเจ็กต์ไฟล์ ดังนั้นจึงไม่สามารถจัดการได้
มาตรฐาน

-i
-l หรือ --load-average หรือ --max-load
ตัวเลือก "-m" ของ -m Makepp เกี่ยวข้องกับการเลือกวิธีการลายเซ็น ในขณะที่ GNU make
ละเว้น -m

-p หรือ --print-data-base
-q หรือ --question
-R หรือ --no-builtin-variables
ตัวเลือก "-R" ของ Makepp ทำสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

-S --ไม่ไปต่อ หรือ --หยุด
ตัวเลือก "--หยุด" จะหยุด (ทำให้เข้าสู่โหมดสลีป) makepp หลังจากเรียนรู้กฎทั้งหมด ดังนั้นคุณ
แก้ไขต่อได้

-t หรือ --touch
-w หรือ --print-directory
สิ่งนี้เกิดขึ้นโดยอัตโนมัติ

--warn-undefined-ตัวแปร

สิ่งเหล่านี้สามารถสนับสนุนได้ง่ายหากมีใครสนใจ

ตัวแปร เข้ากันไม่ได้


Makepp ค้นหาคำสั่งที่ตรงกันใน $PATH เพื่อส่งคืนตัวแปรเช่น "$(CC)" หรือ
"$(CXX)" ในขณะที่ GNU make มีค่าเริ่มต้นคงที่ makepp ยังให้ความสำคัญกับ "gcc" และ
"g++" ในขณะที่ GNU ส่งคืน "cc" อย่างน่าประหลาดใจสำหรับอดีต แต่เหมือนกันสำหรับ
หลัง คุณสามารถแทนที่สิ่งเหล่านี้ใน makefile บนบรรทัดคำสั่งหรือโดยการส่งออกa
ตัวแปรที่มีชื่อเดียวกันก่อนเรียกใช้ makepp

ใช้ makepp_incompatibilities ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad