Phát hành hệ thống xây dựng CMake 3.17.0

giới thiệu phát hành trình tạo tập lệnh xây dựng mở đa nền tảng CMake 3.17, hoạt động thay thế cho Autotools và được sử dụng trong các dự án như KDE, LLVM/Clang, MySQL, MariaDB, ReactOS và Blender. Mã CMake được viết bằng C++ và được phân phối theo giấy phép BSD.

CMake đáng chú ý vì cung cấp ngôn ngữ kịch bản đơn giản, phương tiện mở rộng chức năng thông qua các mô-đun, số lượng phụ thuộc tối thiểu (không ràng buộc với M4, Perl hoặc Python), hỗ trợ bộ đệm, sự hiện diện của các công cụ để biên dịch chéo, hỗ trợ tạo bản dựng các tệp dành cho nhiều hệ thống xây dựng và trình biên dịch, tiện ích ctest và cpack hiện diện để xác định tập lệnh kiểm tra và gói xây dựng, tiện ích cmake-gui để thiết lập các tham số bản dựng một cách tương tác.

Chính cải tiến:

  • Một trình tạo tập lệnh lắp ráp mới dựa trên bộ công cụ Ninja đã được thêm vào - “Ninja Multi-Config”, khác với trình tạo tập lệnh cũ ở khả năng xử lý một số cấu hình lắp ráp cùng một lúc.
  • Trong trình tạo tập lệnh hợp ngữ cho Visual Studio xuất hiện khả năng xác định các tệp nguồn được liên kết với từng cấu hình (nguồn trên mỗi cấu hình).
  • Khả năng đặt tham số meta cho CUDA (“cuda_std_03”, “cuda_std_14”, v.v.) đã được thêm vào các công cụ để cài đặt tham số trình biên dịch (Tính năng biên dịch).
  • Đã thêm các biến "CMAKE_CUDA_RUNTIME_LIBRARY" và "CUDA_RUNTIME_LIBRARY" để chọn loại thư viện thời gian chạy khi sử dụng CUDA.
  • Đã thêm mô-đun "FindCUDAToolkit" để xác định bộ công cụ CUDA có sẵn trên hệ thống mà không bật ngôn ngữ CUDA.
  • Đã thêm lệnh "--debug-find" vào cmake để đưa ra chẩn đoán bổ sung có thể đọc được khi thực hiện các thao tác tìm kiếm. Với mục đích tương tự, biến CMAKE_FIND_DEBUG_MODE đã được thêm vào.
  • Đã thêm hỗ trợ tìm kiếm các công cụ CURL bằng cách sử dụng tệp cấu hình do cmake tạo “CURLConfig.cmake” vào mô-đun “FindCURL”. Để tắt hành vi này, biến CURL_NO_CURL_CMAKE được cung cấp.
  • Mô-đun FindPython đã bổ sung khả năng tìm kiếm các thành phần Python trong môi trường ảo được quản lý bằng “conda”.
  • Tiện ích ctest đã thêm tùy chọn “--no-tests=[error|ignore]” để xác định hành vi trong trường hợp không có bài kiểm tra nào và “--repeat” để đặt điều kiện cho việc chạy lại bài kiểm tra (until-pass, sau thời gian chờ).
  • Các thuộc tính mục tiêu tập hợp INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES và INTERFACE_LINK_DEPENDS hiện được chuyển giữa các phần phụ thuộc nội bộ của các thư viện được tập hợp tĩnh.
  • Khi sử dụng bộ công cụ MinGW, tính năng tìm kiếm tệp DLL bằng lệnh find_library bị tắt theo mặc định (thay vào đó, nỗ lực mặc định là nhập thư viện ".dll.a").
  • Logic để chọn tiện ích ninja trong trình tạo Ninja giờ đây không phụ thuộc vào tên của tệp thực thi - tiện ích ninja-build, ninja hoặc samu đầu tiên được tìm thấy trong các đường dẫn được xác định thông qua biến môi trường PATH được sử dụng.
  • Đã thêm lệnh "-E rm" vào cmake. Lệnh này có thể được sử dụng để xóa các tệp và thư mục thay vì các lệnh "-E Remove" và "-E Remove_directory" riêng biệt.

Nguồn: opennet.ru

Thêm một lời nhận xét