Bản phát hành hệ thống xây dựng Meson 1.3

Việc phát hành hệ thống xây dựng Meson 1.3.0 đã được xuất bản, được sử dụng để xây dựng các dự án như X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME và GTK. Mã Meson được viết bằng Python và được cấp phép theo giấy phép Apache 2.0.

Mục tiêu phát triển chính của Meson là cung cấp quy trình lắp ráp tốc độ cao kết hợp với sự tiện lợi và dễ sử dụng. Thay vì thực hiện, bản dựng sử dụng bộ công cụ Ninja theo mặc định, nhưng các chương trình phụ trợ khác như xcode và VisualStudio cũng có thể được sử dụng. Hệ thống này có trình xử lý phụ thuộc đa nền tảng tích hợp sẵn cho phép bạn sử dụng Meson để xây dựng các gói cho bản phân phối. Các quy tắc hội được đặt bằng ngôn ngữ dành riêng cho miền được đơn giản hóa, chúng dễ đọc và dễ hiểu đối với người dùng (theo ý tưởng của tác giả, nhà phát triển nên dành tối thiểu thời gian để viết các quy tắc).

Hỗ trợ biên dịch chéo và xây dựng trên Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS và Windows bằng GCC, Clang, Visual Studio và các trình biên dịch khác. Có thể xây dựng các dự án bằng nhiều ngôn ngữ lập trình khác nhau, bao gồm C, C++, Fortran, Java và Rust. Chế độ xây dựng tăng dần được hỗ trợ, trong đó chỉ những thành phần có liên quan trực tiếp đến những thay đổi được thực hiện kể từ lần xây dựng cuối cùng mới được xây dựng lại. Meson có thể được sử dụng để tạo các bản dựng có thể lặp lại, trong đó việc chạy bản dựng trong các môi trường khác nhau sẽ tạo ra các tệp thực thi hoàn toàn giống nhau.

Những cải tiến chính của Meson 1.3:

  • Đã thêm tùy chọn “werror: true” vào các phương thức kiểm tra trình biên dịch, trình biên dịch.compiles(), trình biên dịch.links() và trình biên dịch.run(), xử lý các cảnh báo của trình biên dịch là lỗi (có thể được sử dụng để kiểm tra xem mã có được xây dựng mà không có cảnh báo hay không ).
  • Đã thêm phương thức has_define để kiểm tra định nghĩa ký hiệu bằng bộ tiền xử lý.
  • Tham số macro_name đã được thêm vào hàm configure_file(), thêm tính năng bảo vệ macro cho kết nối kép thông qua “#include” (“bao gồm các bộ bảo vệ”), được thiết kế theo kiểu macro trong ngôn ngữ C (đơn giản hóa việc tạo các tệp cấu hình với động tên macro).
  • Một định dạng đầu ra mới đã được thêm vào configure_file() - JSON ("output_format: json").
  • Đã thêm khả năng sử dụng danh sách giá trị cho tham số c_std và cpp_std (ví dụ: “default_options: 'c_std=gnu11,c11′’).
  • Trong các mô-đun sử dụng CustomTarget để xử lý tệp, khả năng tùy chỉnh đầu ra thông báo bằng tiện ích ninja đã được thêm vào.
  • "jar" build_target không còn được dùng nữa và thay vào đó, nên sử dụng lệnh gọi "jar()".
  • Tham số 'env' đã được thêm vào phương thức Generator.process() để đặt biến môi trường mà qua đó trình tạo sẽ xử lý đầu vào.
  • Khi chỉ định tên mục tiêu xây dựng được liên kết với các tệp thực thi, các hậu tố như "executable('foo', 'main.c', name_suffix: 'bar')" được phép tạo các tệp thực thi bổ sung trong cùng một thư mục.
  • Đã thêm tham số “vs_module_defs” vào hàm exectuable() để sử dụng tệp def xác định danh sách các hàm được chuyển đến Shared_module().
  • Đã thêm tham số 'default_options' vào hàm find_program() để đặt các tùy chọn mặc định cho dự án con dự phòng.
  • Đã thêm phương thức fs.relative_to(), trả về đường dẫn tương đối cho đối số đầu tiên, liên quan đến đối số thứ hai, nếu đường dẫn đầu tiên tồn tại. Ví dụ: "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Tham số sau_symlinks đã được thêm vào các hàm install_data(), install_headers() và install_subdir(); khi được đặt, các liên kết tượng trưng sẽ được tuân theo.
  • Tham số “fill” đã được thêm vào phương thức int.to_string() để điền dần dần chuỗi bằng các số 3 đứng đầu. Ví dụ: gọi message(n.to_string(fill: 4)) với n=004 sẽ tạo ra chuỗi "XNUMX".
  • Đã thêm mục tiêu mới, clang-tidy-fix, chỉ định việc chạy tiện ích clang-tidy với cờ "-fix".
  • Khả năng chỉ định hậu tố (TARGET_SUFFIX) của mục tiêu lắp ráp ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) đã được thêm vào lệnh biên dịch.
  • Đã thêm biến môi trường MESON_PACKAGE_CACHE_DIR để ghi đè đường dẫn đến bộ đệm gói (dự án con/góicache), ví dụ: cho phép bạn sử dụng bộ đệm chung trong một số dự án.
  • Đã thêm lệnh "meson setup --clearcache" để xóa bộ nhớ đệm liên tục.
  • Hỗ trợ cho từ khóa “bắt buộc” đã được thêm vào tất cả các phương thức kiểm tra trình biên dịch “has_*”, ví dụ: thay vì “assert(cc.has_function('some_function'))”, giờ đây bạn có thể chỉ định “cc.has_function('some_function' , bắt buộc: đúng)”.
  • Một từ khóa mới, Rust_abi, đã được thêm vào các hàm Shared_library(), static_library(), Library() và Shared_module(). Những hàm này nên được sử dụng thay cho các Rust_crate_type không được dùng nữa.

Nguồn: opennet.ru

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