2008-09-29 40 views
26

Có bất kỳ thư viện đọc tệp cấu hình tốt nào cho C \ C++ có thể được sử dụng cho các ứng dụng được viết trên nền tảng Linux hay không. Tôi muốn có một tập tin cấu hình đơn giản cho ứng dụng của tôi. Tốt nhất là tôi muốn tránh xa các tệp XML có khả năng gây nhầm lẫn cho người dùng.Thư viện tệp cấu hình Linux

+2

Tôi nghĩ rằng quyết định của bạn để tránh XML là một điều tốt. XML không thực sự dễ đọc, ngoại trừ trong trường hợp khẩn cấp. –

Trả lời

6

Boost program_options này cho phép bạn đọc tùy chọn chương trình từ các tập tin cấu hình, các biến môi trường và dòng lệnh. Nó là xách tay và rất dễ sử dụng.

+0

nhưng thư viện này không thể lưu tùy chọn chương trình. – Jichao

1

Nếu bạn chỉ muốn một tệp cấu hình đơn giản, với danh sách các lệnh và/hoặc cài đặt biến, thì rất dễ dàng để viết trình phân tích cú pháp của riêng bạn, dễ dàng đến mức không thể sử dụng thư viện. Nếu bạn cần một cái gì đó phức tạp hơn thì trình phân tích cú pháp nhanh chóng trở nên phức tạp hơn và một thư viện hiện có đáng được sử dụng.

Tôi chưa bao giờ thử sử dụng libconfig, nhưng nó trông giống như một lựa chọn tốt và tôi thích định dạng của các tệp cấu hình mà nó sử dụng.

Bạn cần quyết định xem bạn có muốn chương trình của mình có thể ghi tệp cấu hình hay không. Nếu đó là một chương trình GUI, bạn có thể làm. Điều này sẽ ảnh hưởng đến những thư viện nào phù hợp.

8

Tùy chọn khác là Boost.PropertyTree (doc). Nó cho phép đọc/ghi các tệp XML, INI, JSON và Info. Và bạn nhận được tính di động miễn phí.

0

Câu hỏi đặt ra là bạn nghĩ gì về định dạng tệp? Thuộc tính "đơn giản" là một chút của một underspecification. Nếu bạn đang tìm kiếm một thư viện có thể sử dụng các tệp cấu hình "windows .ini formated", bạn có thể muốn xem ACE http://www.cs.wustl.edu/~schmidt/ACE/.

1

Đối với một ứng dụng, bạn có thể xem xét libconfuse.

Nếu bạn cần có khả năng xử lý nhiều định dạng tệp cấu hình khác nhau (ví dụ: cổng web cho hệ thống cần đọc và ghi tệp cấu hình từ nhiều ứng dụng ở nhiều định dạng), có Augeas.

Các vấn đề liên quan