ระบบคอมไพล์ นอกเหนือจากการกำหนดค่าง่ายๆให้ทำการติดตั้ง

ทั้งหมดหรือเกือบทั้งหมด (และถ้าคุณไม่โชคดี) เราต้องรวบรวมโปรแกรมจากซอร์สโค้ด จริงๆแล้วในโปรเจ็กต์ส่วนใหญ่ก็เพียงพอที่จะทำการ. / กำหนดค่า && ทำการ && ทำการติดตั้งเพื่อติดตั้งโปรแกรม แต่เราจะเห็นทางเลือกอื่น:

GNU ทำ

GNU Make เป็นระบบคอมไพล์ระดับต่ำมีการกำหนดค่าบางอย่างและไม่มีการทดสอบ:

จุดเด่น:

  • แพร่หลายมาก
  • เข้าใจง่าย
  • รวดเร็ว

จุดด้อย:

  • กำหนดค่าได้เล็กน้อย
  • ยากต่อการบำรุงรักษา
  • ไม่ทำการทดสอบ

make

BSD เมค

BSD Make เป็นอีกเวอร์ชันหนึ่งของ Make ที่ระบบปฏิบัติการ * BSD ใช้อยู่ในปัจจุบัน แตกต่างจาก GNU Make ซึ่งเป็น BSD Make ที่ครอบคลุมมากที่สุดในด้านฟังก์ชันการทำงานแม้ว่าจะแพร่หลายน้อยกว่าก็ตาม

จุดเด่น:

  • รวดเร็ว
  • เข้าใจง่าย
  • คุณสมบัติมากกว่า GNU Make

จุดด้อย:

  • ไม่แพร่หลายในโลกของลินุกซ์
  • ไม่ทำการทดสอบ
  • กำหนดค่าได้เล็กน้อย
  • ยากต่อการบำรุงรักษา

make

เครื่องมืออัตโนมัติ

Autotools เป็นระบบ GNU อย่างเป็นทางการและสร้างสคริปต์ที่เรียกว่า config ที่เราต้องเรียกเพื่อสร้าง Makefile ที่เกี่ยวข้องจาก GNU Make มีการใช้กันอย่างแพร่หลาย แต่ผู้คนจำนวนมากขึ้น (รวมตัวเอง) คิดว่ามันยุ่งยากยากช้าและไม่ค่อยเข้ากัน

จุดเด่น:

  • กำหนดค่าได้สูง
  • แพร่หลายมาก

จุดด้อย:

  • การพกพาเพียงเล็กน้อยระหว่างระบบ Non-UNIX
  • ทำการทดสอบมากเกินไป (ตรวจสอบทุกอย่างและทุกอย่างคือทุกอย่าง)
  • ช้ามากเมื่อกำหนดค่า
  • ความเข้ากันได้ย้อนหลังไม่ดี

./configure && make

ซีเมค

(ระบบโปรดของฉัน) CMake เป็นระบบที่มาเพื่อชดเชยข้อบกพร่องของ Autotools ในหลาย ๆ ด้านเช่นความเข้ากันได้ย้อนหลังและการพกพาที่แย่มาก นอกจากนี้ยังปรับปรุงระบบการทดสอบที่สามารถกำหนดค่าได้สูงสำหรับความต้องการของแต่ละโครงการ ความจริงก็คือโครงการจำนวนมากขึ้นเรื่อย ๆ ใช้ CMake เช่น KDE, PortAudio, Ogre3D เป็นต้น เราสามารถจดจำระบบประเภทนี้ได้ด้วยไฟล์ CMakeLists.txt ที่จะสร้าง Makefile หรือโปรเจ็กต์สำหรับ Eclipse หรือ CodeBlocks

จุดเด่น:

  • รวดเร็ว
  • การสนับสนุนข้ามแพลตฟอร์มที่ยอดเยี่ยม
  • คุณสามารถกำหนดการทดสอบด้วยวิธีที่ปรับแต่งได้มาก

จุดด้อย:

  • ยากที่จะเข้าใจในตอนแรก
  • คุณต้องทำงานกับนามธรรมที่น่ากลัวในตอนแรก
  • การแพร่กระจายเพียงเล็กน้อยแม้ว่าจะเติบโตทีละน้อย

cmake . && make

คิวเมค

QMake เป็นระบบที่ออกแบบโดย Trolltech เพื่อรวบรวมโครงการที่ทำใน Qt ด้วยวิธีนี้ qmake ให้ความสำคัญกับ Qt เป็นอย่างมากและมักเป็นรูปแบบที่ IDE ใช้เช่น QtCreator ค่อนข้างเป็นที่นิยมในโครงการ Qt แต่ไม่พบนอกสภาพแวดล้อมนี้:

จุดเด่น:

  • รวมเข้ากับ Qt. ได้เป็นอย่างดี
  • รวดเร็ว
  • หลายแพลตฟอร์มที่ดีภายใน Qt

จุดด้อย:

  • ผิดปกตินอกแอป Qt

qmake . && make

SCCons

SCons เป็นระบบที่ใช้ Python สำหรับการรวบรวมโปรเจ็กต์ C / C ++ ไม่เหมือน Autotools, CMake หรือ QMake; SCons ไม่สร้าง Makefile SCons สามารถปรับเปลี่ยนได้มาก แต่อาจจะช้าที่สุดในการใช้งานง่ายๆ
จุดเด่น:

  • ปรับเปลี่ยนได้ง่าย
  • ทำการทดสอบที่ยุติธรรม

จุดด้อย:

  • การแพร่กระจายเล็กน้อย
  • ช้า

scons

Boost Jam

Boost.Jam เป็นเวอร์ชันของ Perforce Jam ที่ใช้ในไลบรารี C ++ Boost ยอดนิยมแม้ว่าระบบคอมไพล์จะสามารถใช้แยกกันได้ ไม่เหมือน GNU Make Boost.Jam ใช้ Jamfiles ซึ่งเป็นเวอร์ชันปรับปรุงของ Makefiles พวกเขาค่อนข้างเป็นที่นิยมในสภาพแวดล้อม BeOS / Zeta / Haiku

จุดเด่น:

  • รวดเร็ว
  • สั้นที่สุดในการเขียน

จุดด้อย:

  • การแพร่กระจายเล็กน้อย
  • ความยากในการทดสอบ

bjam

นินจา

Ninja เป็นระบบที่ Google พัฒนาขึ้นเพื่อมอบระบบการสร้างที่รวดเร็วเป็นพิเศษซึ่งเดิมออกแบบมาเพื่อให้เป็นของโครงการ Chromium Ninja ไม่ได้ออกแบบมาให้ปรับเปลี่ยนได้ง่ายตามที่ผู้เขียนเองระบุว่าระบบที่สร้าง Ninja ควรจะพบได้ ตัวที่แนะนำคือ CMake และ gyp

จุดเด่น:

  • Muy rápido

จุดด้อย:

  • คุณต้องการระบบอื่นเพื่อวางไข่นินจา
  • การแพร่กระจายเล็กน้อย

ninja

คนอื่น ๆ

คุณสามารถใช้ระบบอื่น ๆ เช่นสคริปต์ bash หรือ python ของคุณเอง นอกจากนี้ยังมีเครื่องกำเนิดไฟฟ้าสำหรับภาษาอื่น ๆ ที่ไม่ใช่ภาษาแม่ที่สามารถใช้ได้เช่น Gradle, Maven, gyp เป็นต้น


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   อะบีมาเอลมาร์เทล dijo

    Make ไม่ใช่ระบบคอมไพล์ แต่เป็นตัวสร้างไบนารี (หรือเป้าหมาย) จากซอร์สโค้ด นอกจากนี้ยังสามารถใช้เป็นงานวิ่ง

    ฉันแตกต่างกับคุณที่ BSD make นั้นกว้างกว่าในการทำงาน GNU make นั้นสมบูรณ์กว่ามันมีฟังก์ชันมากกว่า และฉันพูดสิ่งนี้จากประสบการณ์ของฉันเองใน BSD ฉันต้องติดตั้ง GNU make เสมอเพราะ BSD make นั้นง่ายมากเมื่อเทียบกับ GNU make

    ฉันเห็นด้วยกับคุณว่า Autotools ค่อนข้างยุ่งยากฉันชอบใช้ Makefile มากกว่า Makefiles ที่สร้างโดย Autotools นั้นยากที่จะดีบัก

    ทักทาย!

    1.    เอเดรียน ArroyoStreet dijo

      ขอบคุณสำหรับความคิดเห็น!
      ในความคิดของฉัน GNU make นั้นเป็นแบบดั้งเดิมและซื่อสัตย์กับโปรแกรมการทำต้นฉบับมาโดยตลอดและ BSD make นั้นเป็นนวัตกรรมใหม่ ๆ อยู่เสมอ แต่อาจเป็นไปได้ว่าฉันสังเกตเห็นสิ่งอื่น ๆ เมื่อทำการเปรียบเทียบ

      Autotools เป็นปัญหาใหญ่ ในฐานะผู้สนับสนุนระบบปฏิบัติการไฮกุฉันต้องพอร์ตซอฟต์แวร์ด้วยเครื่องมืออัตโนมัติและมันก็เป็นนรก มีไม่กี่กรณีที่ฉันลงเอยด้วยการสร้าง Makefile หรือ CMakeLists.txt ก่อนที่จะแก้ไขปัญหานี้

  2.   ชัคแดเนียล dijo

    ฉันกำลังใช้ Premake4 ซึ่งสามารถกำหนดค่าได้มากและเรียบง่ายตามสคริปต์ Lua ลองดูถ้าคุณไม่รู้
    ขอแสดงความยินดีกับบทความที่เรียบง่ายและกระชับอ้างอิงได้ดีเยี่ยม

  3.   อัฐิ dijo

    'make check' ใช้เพื่อตรวจสอบการรวบรวมหลังจากใช้ make
    ทักทาย