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

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

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

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

  • มีการเพิ่มตัวสร้างสคริปต์แอสเซมบลีใหม่โดยใช้ชุดเครื่องมือ Ninja - "Ninja Multi-Config" ซึ่งแตกต่างจากตัวสร้างสคริปต์เก่าในความสามารถในการประมวลผลการกำหนดค่าแอสเซมบลีหลายรายการพร้อมกัน
  • ในตัวสร้างสคริปต์แอสเซมบลีสำหรับ Visual Studio ปรากฏ ความสามารถในการกำหนดไฟล์ต้นฉบับที่เกี่ยวข้องกับการกำหนดค่าแต่ละรายการ (แหล่งที่มาต่อการกำหนดค่า)
  • เพิ่มความสามารถในการตั้งค่าพารามิเตอร์เมตาสำหรับ CUDA (“cuda_std_03”, “cuda_std_14” ฯลฯ) ลงในเครื่องมือสำหรับการตั้งค่าพารามิเตอร์คอมไพเลอร์ (คุณสมบัติการคอมไพล์)
  • เพิ่มตัวแปร "CMAKE_CUDA_RUNTIME_LIBRARY" และ "CUDA_RUNTIME_LIBRARY" เพื่อเลือกประเภทของไลบรารีรันไทม์เมื่อใช้ CUDA
  • เพิ่มโมดูล "FindCUDAToolkit" เพื่อกำหนดชุดเครื่องมือ CUDA ที่มีอยู่ในระบบโดยไม่ต้องเปิดใช้งานภาษา CUDA
  • เพิ่มคำสั่ง "--debug-find" เพื่อ cmake เพื่อส่งออกการวินิจฉัยเพิ่มเติมที่อ่านได้เมื่อดำเนินการค้นหา เพื่อวัตถุประสงค์ที่คล้ายกัน ตัวแปร CMAKE_FIND_DEBUG_MODE ได้ถูกเพิ่มเข้าไปแล้ว
  • เพิ่มการรองรับการค้นหาเครื่องมือ CURL โดยใช้ไฟล์การกำหนดค่าที่สร้างโดย cmake “CURLConfig.cmake” ไปยังโมดูล “FindCURL” หากต้องการปิดใช้งานพฤติกรรมนี้ จะมีการจัดเตรียมตัวแปร CURL_NO_CURL_CMAKE
  • โมดูล FindPython ได้เพิ่มความสามารถในการค้นหาส่วนประกอบ Python ในสภาพแวดล้อมเสมือนที่จัดการโดยใช้ "conda"
  • ยูทิลิตี้ ctest ได้เพิ่มตัวเลือก “--no-tests=[error|ignore]” เพื่อกำหนดลักษณะการทำงานในกรณีที่ไม่มีการทดสอบ และ “--ทำซ้ำ” เพื่อกำหนดเงื่อนไขสำหรับการทดสอบที่รันซ้ำ (จนกว่าจะผ่าน หลังจากหมดเวลา)
  • คุณสมบัติเป้าหมายการประกอบ INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES และ INTERFACE_LINK_DEPENDS จะถูกถ่ายโอนระหว่างการขึ้นต่อกันภายในของไลบรารีที่ประกอบแบบคงที่
  • เมื่อใช้ชุดเครื่องมือ MinGW การค้นหาไฟล์ DLL ด้วยคำสั่ง find_library จะถูกปิดใช้งานตามค่าเริ่มต้น (ความพยายามเริ่มต้นคือการนำเข้าไลบรารี ".dll.a" แทน)
  • ตรรกะสำหรับการเลือกยูทิลิตี้นินจาในเครื่องกำเนิดนินจาตอนนี้ไม่ได้ขึ้นอยู่กับชื่อของไฟล์ปฏิบัติการ - ยูทิลิตี้นินจาบิลด์, นินจาหรือซามูตัวแรกที่พบในเส้นทางที่กำหนดผ่านตัวแปรสภาพแวดล้อม PATH จะถูกใช้
  • เพิ่มคำสั่ง "-E rm" ใน cmake ที่สามารถใช้เพื่อลบไฟล์และไดเร็กทอรีแทนคำสั่ง "-E Remove" และ "-E Remove_directory" แยกต่างหาก

ที่มา: opennet.ru

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