2009-05-11 6 views
14

Tôi đã nghe nhiều ý kiến ​​hay về Boost trong quá khứ và nghĩ rằng tôi sẽ thử. Vì vậy, tôi đã tải xuống tất cả các gói cần thiết từ trình quản lý gói trong Ubuntu 9.04. Bây giờ tôi đang gặp khó khăn trong việc tìm hiểu làm thế nào để thực sự sử dụng các thư viện darn.Sử dụng Boost trên ubuntu

Có ai biết về một hướng dẫn tốt về Boost đi từ Hello World đến chủ đề nâng cao và cũng bao gồm cách biên dịch chương trình bằng g ++ trên ubuntu?

Trả lời

16

Đồng ý; the boost website có hướng dẫn tốt cho hầu hết các phần, được chia nhỏ theo thư viện con.

Để biên dịch, 80% việc triển khai thư viện được xác định trong các tệp tiêu đề, làm cho việc biên dịch trở nên tầm thường. ví dụ: nếu bạn muốn sử dụng shared_ptr's, bạn chỉ cần thêm

#include <boost/shared_ptr.hpp> 

và biên dịch như bình thường. Không cần thêm đường dẫn thư viện vào lệnh g ++ của bạn, hoặc chỉ định -llibboost. Miễn là thư mục boost nằm trong đường dẫn include của bạn, bạn đã sẵn sàng.

Từ các tài liệu hướng tăng:

Các thư viện duy nhất mà cần phải được biên dịch và liên kết như sau: Các thư viện Boost duy nhất mà phải được xây dựng riêng biệt là:

  • Boost.Filesystem
  • Boost.IOStreams
  • Boost.ProgramOptions
  • Boost.Python (xem Boost.Python build do cumentation trước khi xây dựng và cài đặt nó)
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.Thread
  • Boost.Wave

Một vài thư viện có separately- tùy chọn các tệp nhị phân được biên dịch:

  • Boost.DateTime có thành phần nhị phân chỉ cần thiết nếu bạn đang sử dụng tính năng to_string/from_string hoặc serialization của nó hoặc nếu bạn đang nhắm mục tiêu Visual C++ 6.x hoặc Borland.
  • Boost.Graph cũng có thành phần nhị phân chỉ cần thiết nếu bạn định phân tích cú pháp các tệp GraphViz.
  • Boost.Test có thể được sử dụng trong chế độ "chỉ tiêu đề" hoặc "được biên dịch riêng", mặc dù biên dịch riêng biệt được khuyến nghị sử dụng nghiêm trọng.

Vì vậy, nếu bạn đang sử dụng một trong những thư viện được liệt kê, sử dụng Getting Started guide tới, tốt, giúp bạn bắt đầu trên biên dịch và liên kết để tăng cường.

-1

Thư viện có tài liệu hướng dẫn và nhiều thư viện trong số đó có hướng dẫn như là một phần của tài liệu. Chỉ cần bắt đầu đọc.

+0

đâu là các tệp Boost được lưu trữ trên máy tính của tôi. Tôi đã không tải chúng xuống khỏi trang web Boost. – Kredns

+1

bạn có thể tìm vị trí của tệp bằng trình quản lý gói của bạn. Nó thường trong/usr/include/boost và/usr/lib/libboost_ * –

+0

Nhưng sử dụng hướng dẫn mà idown đã cho tôi nó sẽ không biên dịch. Có anyway tôi có thể sử dụng tính năng backtick của g ++? – Kredns

5

Trang web Boost có một số hướng dẫn hay, chúng chỉ là loại hidden.

-1

Tăng cường không phải là ngôn ngữ lập trình cũng như khung ứng dụng - bởi vì nó chỉ là một bộ sưu tập các thư viện, không có chương trình Boost 'Hello World' nào như vậy. Hầu hết các thư viện trong Boost có thể được sử dụng nhiều hay ít độc lập, và chúng thay đổi kích thước từ một hàm đến các thư viện lớn có thể đứng một mình.

Cách tốt nhất để tìm hiểu Boost chỉ đơn giản là thử và làm việc khi bạn viết mã mới. Sử dụng smart_ptr bất cứ khi nào bạn có thể; sử dụng MPL lần sau bạn muốn thực hiện công việc biên dịch. Có rất nhiều sự đa dạng trong Boost, nhưng có lẽ bạn nên bắt đầu xem phần Tiện ích; đó là những thư viện có trọng lượng nhẹ nhất và được sử dụng phổ biến nhất.

+0

Lý do cho bỏ phiếu xuống: 'Hello World' có thể có nghĩa là một ví dụ đầu tiên, quá đơn giản, kết nối tất cả các hệ thống ống nước.Chương trình 'Hello World' C ban đầu yêu cầu một chương trình để có thể truy cập máy tính, tạo nguồn chương trình, lưu, biên dịch, liên kết, chạy và kiểm tra kết quả. –

3

Tài liệu thư viện là một túi hỗn hợp. Một số là tốt, nhưng một số là một tham chiếu hơn là một hướng dẫn. Hướng dẫn tốt nhất cho (một số) thư viện Boost là cuốn sách Beyond the C++ Standard Library. Ít nhất, phần giới thiệu đưa ra một mô tả đoạn của nhiều thư viện. Từ đó, bạn có thể quyết định thư viện nào là quan trọng nhất đối với nhu cầu hiện tại của bạn, và nếu nó có trong sách, hãy đọc chương trên đó hoặc đọc tài liệu trên trang web.

Nếu bạn đọc tiếng Đức, có good online guide. Google dịch thực hiện một công việc đủ tốt mà một người không phải là người nói như tôi có thể hiểu được. Ngoài ra, trừ khi bạn có nhiều kinh nghiệm với C++, tôi bắt đầu với các thư viện đơn giản hơn (ví dụ: smart_ptr, tuple, conversion, tokenizer, regex, date_time, test), trước khi thử các biến phức tạp hơn (ràng buộc, biến thể) , bất kỳ), hoặc những cái thực sự tiên tiến (khái niệm, MPL, Fusion).

3

Sử dụng Easypeasy 1.1 (dành cho netbook) dựa trên Ubuntu tôi đã có thể sử dụng Trình quản lý gói Synaptic để cài đặt, tôi tin rằng, libboost-dev. Sau đó, chỉ đơn giản bằng cách thêm:

#include "boost/foreach.hpp" 

tôi đã có thể thay thế các dây chuyền hiện có trong một ứng dụng hiện có (mà đã một Ask lớp mà không có gì để làm với tăng):

for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii) 
    std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl; 

với:

BOOST_FOREACH (Ask* ii, ui) 
    std::cout << ii->prompt() << ii->answer() << std::endl; 

Vì tôi hiểu đây là tính năng chỉ dành cho tiêu đề. Tôi chưa sử dụng bất cứ điều gì yêu cầu thay đổi thời gian liên kết.

1

Tôi vừa xem hướng dẫn tăng cường tiếng Đức đó, và thấy có một số english cũng vậy (cùng một cuốn sách). Có vẻ khá tốt, vừa đọc các trang giới thiệu đó là khá hữu ích