Làm sao để build thư viện boost C++ (Sử dụng Visual Studio)?

Bình thường thì phải build bằng dòng lệnh, nhưng có một UI để build Boost thế này cho các bạn dễ nhìn:
https://bitbucket.org/Vertexwahn/bluego
Có các tùy chọn: Variants, Link, Threading, Runtime-link :neutral_face:
Và giờ mình hoàn toàn rối bời chả biết đường nào mà lần, khi mà tìm google thì toàn ra những câu trả lời rất chung chung. Hầu hết người ta bày cài bằng cmd, đưa command ra và không giải thích gì thêm :neutral_face: , có ông còn viết thêm mấy cái tham số gì đó mà gõ .\b2 --help lại chả thấy đâu.
Mình chỉ biết khi build app thì có build debug và release, static link và dynamic link, mà build boost lại có đến 4 tùy chọn kiểu này thì vượt ngoài kiến thức của mình rồi.
Bạn nào có thể giải thích cặn kẽ từng cái một giúp mình được không? Làm ơn đừng ngầm định là mình giỏi C++.

[spoiler]Mình chỉ có thể nói những gì mình biết thôi, còn lại mong các bạn có kiến thức sâu hơn giải thích thêm và cặn kẽ hơn.[/spoiler]

Sao bạn không build bằng bootstrap có sẵn của boost ấy (Mình down thử thằng BlueGo kia về xem qua thì thiếu khá nhiều lib của boost)
Thằng b2 thực chất nó là bjam(v2) re-name, dùng hỗ trợ build lib boost(ngoài ra có nhiều chức năng khác nhưng mình chưa từng khai thác nó ngoài build).
Build Variants là build toàn bộ các phiên bản cho mỗi 1 thư viện con của boost, có lẽ để tương thích ngược.

Thằng runtime-link mình cũng chưa từng dùng bao giờ vì toàn xài trực tiếp loadtime-link (thấy plugin load, game engine hay dùng thằng runtime-link), có lẽ bạn nên google thêm.
Threading mình cũng không rõ

Youtube:
VS2010:

VS2015:

git clone nó về rồi chạy 3 dòng
bootstrap-vcpkg.bat
vcpkg integrate install

vcpkg install boost
là xong, thoải mái tạo project mới, nó integrate sẵn boost vô luôn, khỏi cần include dir lib thủ công nữa. Thích thư viện nào phổ biến thì nó có hết.

mỗi lần update thì git pull rồi vcpkg update, nó chỉ hướng dẫn hết, rất đơn giản.

5 Likes

Nó có tự build cho mình đúng toolset, đúng bit, cho mình chỉnh static hoặc dynamic không?

nó build hết thì phải

debug+release, shared+static, threading thì multi ko có single thread

=)

Thiếu thông tin vầy là không xài được rồi.
Xoay sở hồi cũng tìm ra được link này :sleepy:http://www.boost.org/build/doc/html/bbv2/overview/builtins/features.html

1 Like

tự build thì cứ threading multi, release, shared cho lẹ, build hết tuốt tuồn tuột mất khoảng 15’, còn thêm thằng debug/static vô thì 45’ =)

Rồi, đây là những gì mình đã hiểu được ở 4 thông số trên :sleepy:

Variants: buid debug hoặc release;
Link: static - các library trong boost được build về dạng file .lib | shared: các libary trong boost được build về dạng .lib và .dll, tức là xuất phẩm phải kè kè vài cái dll boost;
Runtime-link: bởi boost cũng sử dụng C runtime, cho nên: static: sử dụng static C runtime | shared: sử dụng dynamic C runtime, xài shared thì xuất phẩm phải đi kèm mấy cái DLL của C (ví dụ VCRUNTIME140.dll, nếu build debug thì là VCRUNTIME140d.dll);
Threading: một số thứ trong boost có liên quan đến multithread, bật cái này để lái boost sang nhánh code phù hợp với multithread. Mình thấy trong phần Runtime Library của Visual Studio toàn là Multithread nên thôi kệ chọn Multithread :sweat:.

3 Likes

Hi bạn.
Mình cũng mới tải Boost, mình gặp lỗi:
D:\boost_1_82_0\boost\config\auto_link.hpp(122,1): fatal error C1189: #error: “Incompatible build options”
Nó đang yêu cầu “Runtime Library” là “/MDd” hoặc “/MTd”. Mà mình cần sử dụng “/MT”.
Làm cách nào sử dụng Boost với “/MT” vậy bạn.
Mong phản hồi từ bạn. Thanks you :))

đổi build config từ Debug thành Release

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?