การเปิดตัวระบบบิลด์ CMake 3.16

แนะนำ การเปิดตัวตัวสร้างสคริปต์ open build ข้ามแพลตฟอร์ม ซีเมค 3.16ซึ่งทำหน้าที่เป็นทางเลือกแทน Autotools และใช้ในโครงการต่างๆ เช่น KDE, LLVM/Clang, MySQL, MariaDB, ReactOS และ Blender รหัส CMake เขียนด้วยภาษา C++ และเผยแพร่ภายใต้ลิขสิทธิ์ BSD

CMake มีความโดดเด่นในด้านการให้บริการภาษาสคริปต์อย่างง่าย วิธีการขยายฟังก์ชันการทำงานผ่านโมดูล จำนวนการพึ่งพาขั้นต่ำ (ไม่มีการผูกกับ M4, Perl หรือ Python) การสนับสนุนแคช การมีอยู่ของเครื่องมือสำหรับการคอมไพล์ข้าม การสนับสนุนสำหรับการสร้างบิลด์ ไฟล์สำหรับระบบบิลด์และคอมไพเลอร์ที่หลากหลาย, ยูทิลิตี้การแสดงตน ctest และ cpack สำหรับการกำหนดสคริปต์ทดสอบและแพ็คเกจการสร้าง, ยูทิลิตี้ cmake-gui สำหรับการตั้งค่าพารามิเตอร์บิลด์แบบโต้ตอบ

หลัก การปรับปรุง:

  • เพิ่มการรองรับ Objective C (“OBJC”) และภาษา Objective
    C++ ("OBJCXX") ซึ่งสามารถเปิดใช้งานได้ผ่านคำสั่ง project() และ Enable_ language() หลังจากนั้นโค้ดในไฟล์ ".m" ".mm" จะคอมไพล์เป็นโค้ด Objective C และ Objective C++ แทนที่จะเป็น C++ เหมือนเมื่อก่อน;

  • เพิ่มการรองรับคอมไพเลอร์ Clang บนแพลตฟอร์ม Solaris
  • เพิ่มตัวเลือกบรรทัดคำสั่งใหม่: “cmake -E true|false” เพื่อพิมพ์โค้ดส่งคืน 0 และ 1; "cmake --trace-redirect=" เพื่อเปลี่ยนเส้นทางข้อมูลการติดตามไปยังไฟล์แทน
    "stderr"; คำสั่ง "cmake --loglevel" ถูกเปลี่ยนชื่อเป็น "--log-level" เพื่อให้สอดคล้องกับชื่อของคำสั่งอื่น

  • เพิ่มคำสั่ง “target_precompile_headers()” เพื่อแสดงรายการไฟล์ส่วนหัวที่ใช้ระหว่างการคอมไพล์ล่วงหน้า (ลดเวลาในการสร้าง)
  • เพิ่มคุณสมบัติ “UNITY_BUILD” ซึ่งจะเปิดใช้งานโหมดแบตช์สำหรับการประมวลผลไฟล์ต้นฉบับในตัวสร้างเพื่อเพิ่มความเร็วในการสร้าง
  • เพิ่มคำสั่ง “find_file()”, “find_library()”, “find_path()”,
    "find_package()" และ "find_program()" เพื่อค้นหาไฟล์ ไลบรารี พาธ แพ็กเกจ และไฟล์ปฏิบัติการตามตัวแปรที่กำหนดพาธการค้นหาสำหรับไฟล์ประเภทต่างๆ
    ตัวแปร "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ROOT_PATH", "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" และ "CMAKE_FIND_USE_PACKAGE_REGIST" ใช้ในการควบคุม เส้นทางการค้นหาฐาน RY";

  • เพิ่มโหมด “file(GET_RUNTIME_DEPENDENCIES)” ให้กับคำสั่ง “file()” ซึ่งช่วยให้คุณสามารถดึงข้อมูลรายการไลบรารีที่ใช้เมื่อเชื่อมโยงไฟล์หรือไลบรารีที่ปฏิบัติการได้แบบไดนามิก โหมดนี้แทนที่คำสั่ง GetPrerequisites() ซึ่งขณะนี้เลิกใช้แล้ว
  • คำสั่ง “ctest(1)” ใช้ความสามารถในการซีเรียลไลซ์การทดสอบตามทรัพยากรที่จำเป็นสำหรับการทดสอบแต่ละครั้ง
  • ตัวแปร "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" เลิกใช้แล้ว และควรแทนที่ด้วย "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • การสนับสนุนแพลตฟอร์ม AIX ที่ปรับปรุงแล้ว เมื่อใช้คุณสมบัติ "ENABLE_EXPORTS" นอกเหนือจากไฟล์ปฏิบัติการแล้ว ขณะนี้ไฟล์นำเข้าสำหรับตัวเชื่อมโยงจะถูกสร้างขึ้น โดยบันทึกด้วยนามสกุล ".imp" ในปลั๊กอินที่สร้างขึ้นโดยการเรียก "add_library()" ด้วยตัวเลือก "MODULE" ไฟล์นี้สามารถใช้ได้เมื่อลิงก์โดยใช้คำสั่ง "target_link_libraries()" การลิงก์รันไทม์บน AIX ถูกปิดใช้งานโดยดีฟอลต์ เนื่องจากขณะนี้ CMake จัดเตรียมข้อมูลสัญลักษณ์ที่จำเป็นทั้งหมดสำหรับการลิงก์ ณ เวลาโหลด หากต้องการใช้การลิงก์รันไทม์ของไลบรารีแบบไดนามิกหรือโมดูลที่โหลดได้ คุณต้องระบุตัวเลือก “-Wl, -G” อย่างชัดเจนในรายการแฟล็กการเริ่มต้นตัวเชื่อมโยง ซึ่งกำหนดผ่านตัวแปร “CMAKE_SHARED_LINKER_FLAGS” และ “CMAKE_MODULE_LINKER_FLAGS”

ที่มา: opennet.ru

เพิ่มความคิดเห็น