Apa penjelasan langkah demi langkah yang baik tentang cara menggunakan perpustakaan Boost dalam proyek kosong di Visual Studio?
Apa penjelasan langkah demi langkah yang baik tentang cara menggunakan perpustakaan Boost dalam proyek kosong di Visual Studio?
Jawaban:
Walaupun jawaban Nate sudah cukup bagus, saya akan mengembangkannya lebih khusus untuk Visual Studio 2010 seperti yang diminta, dan memasukkan informasi tentang kompilasi dalam berbagai komponen opsional yang memerlukan perpustakaan eksternal.
Jika Anda hanya menggunakan pustaka header, maka yang perlu Anda lakukan adalah menghapus pengunduhan unduhan dan mengatur variabel lingkungan. Instruksi di bawah ini mengatur variabel lingkungan untuk Visual Studio saja, dan tidak di seluruh sistem secara keseluruhan. Catatan Anda hanya perlu melakukannya sekali.
C:\boost_1_47_0
.).Microsoft.Cpp.<Platform>.user
, dan pilih Properties
untuk membuka Halaman Properti untuk diedit.VC++ Directories
di sebelah kiri.Include Directories
bagian untuk menyertakan path ke file sumber boost Anda.Jika Anda ingin menggunakan bagian dorongan yang membutuhkan bangunan, tetapi tidak ada fitur yang memerlukan dependensi eksternal, maka membangunnya cukup sederhana.
C:\boost_1_47_0
.).bootstrap.bat
untuk membangun b2.exe (sebelumnya bernama bjam).Jalankan b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
; b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Jalan-jalan / nonton film atau 2 / ....
Library Directories
bagian untuk menyertakan jalur ke output perpustakaan Anda. (Default untuk contoh dan instruksi di atas adalah C:\boost_1_47_0\stage\lib
. Ganti nama dan pindahkan direktori terlebih dahulu jika Anda ingin memiliki x86 & x64 berdampingan (seperti ke <BOOST_PATH>\lib\x86
& <BOOST_PATH>\lib\x64
).Jika Anda ingin komponen opsional, maka Anda memiliki lebih banyak pekerjaan yang harus dilakukan. Ini adalah:
Filter Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
.).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
saat menjalankan b2 pada langkah 5.Boost.IOStreams filter Zlib
C:\zlib-1.2.5
.).-sZLIB_SOURCE="C:\zlib-1.2.5"
saat menjalankan b2 pada langkah 5.Boost.MPI
project-config.jam
dalam direktori <BOOST_PATH>
yang dihasilkan dari menjalankan bootstrap. Tambahkan baris yang bertuliskan using mpi ;
(perhatikan spasi sebelum tanda ';').Boost.Python
Untuk sepenuhnya membangun versi 32-bit perpustakaan membutuhkan Python 32-bit, dan juga untuk versi 64-bit. Jika Anda memiliki beberapa versi yang terinstal untuk alasan seperti itu, Anda harus memberi tahu b2 di mana menemukan versi spesifik dan kapan harus menggunakannya. Salah satu cara untuk melakukannya adalah dengan mengedit file project-config.jam
di direktori <BOOST_PATH>
yang dihasilkan dari menjalankan bootstrap. Tambahkan dua baris berikut yang menyesuaikan yang sesuai untuk jalur & versi pemasangan Python Anda (perhatikan spasi sebelum ';').
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Perhatikan bahwa spesifikasi Python eksplisit seperti saat ini menyebabkan pembangunan MPI gagal. Jadi, Anda perlu melakukan beberapa bangunan terpisah dengan dan tanpa spesifikasi untuk membangun semuanya jika Anda juga membangun MPI.
Ikuti set instruksi kedua di atas untuk membangun boost.
Dukungan Boost.Regex ICU
C:\icu4c-4_8
.).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
saat menjalankan b2 pada langkah 5.Sementara petunjuk di situs web Boost sangat membantu, berikut adalah versi ringkas yang juga membangun pustaka x64.
Ini menginstal Boost header file di bawah C:\Boost\include\boost-(version)
, dan perpustakaan 32-bit di bawah C:\Boost\lib\i386
. Perhatikan bahwa lokasi default untuk perpustakaan adalah C:\Boost\lib
tetapi Anda ingin meletakkannya di bawah i386
direktori jika Anda berencana untuk membangun beberapa arsitektur.
bootstrap
Lari: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
Tambahkan C:\Boost\include\boost-(version)
ke jalur sertakan Anda.
C:\Boost\lib\i386
ke jalur lib Anda.Ini menginstal Boost header file di bawah C:\Boost\include\boost-(version)
, dan pustaka 64-bit di bawah C:\Boost\lib\x64
. Perhatikan bahwa lokasi default untuk perpustakaan adalah C:\Boost\lib
tetapi Anda ingin meletakkannya di bawah x64
direktori jika Anda berencana untuk membangun beberapa arsitektur.
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
ke jalur sertakan Anda.C:\Boost\lib\x64
ke jalur lib Anda.Anda juga dapat mencoba -j% NUMBER_OF_PROCESSORS% sebagai argumen yang akan menggunakan semua inti Anda. Membuat segalanya menjadi sangat cepat pada quad core saya.
Saya dapat merekomendasikan trik berikut: Buat boost.props
file khusus
Prosedur ini memiliki nilai yang mendorong hanya dimasukkan dalam proyek di mana Anda ingin secara eksplisit memasukkannya. Saat Anda memiliki proyek baru yang menggunakan peningkatan, lakukan:
EDIT (berikut edit dari @ jim-fred):
File yang dihasilkan boost.props
terlihat seperti ini ...
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
</PropertyGroup>
<PropertyGroup>
<IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
<LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
</PropertyGroup>
</Project>
Ini berisi makro pengguna untuk lokasi direktori boost (dalam hal ini, D: \ boost_1_53_0) dan dua parameter lainnya: SertakanPath dan LibraryPath. Pernyataan #include <boost/thread.hpp>
akan menemukan thread.hpp di direktori yang sesuai (dalam hal ini, D: \ boost_1_53_0 \ boost \ thread.hpp). Direktori 'stage \ lib \' dapat berubah tergantung pada direktori yang diinstal.
File boost.props ini dapat ditemukan di D:\boost_1_53_0\
direktori.
Bagian Boost apa yang Anda butuhkan? Banyak hal yang merupakan bagian dari TR1 yang dikirimkan bersama Visual Studio, jadi Anda bisa mengatakan, misalnya:
#include <tr1/memory>
using std::tr1::shared_ptr;
Menurut James, ini juga harus bekerja (dalam C ++ 0x):
#include <memory>
using std::shared_ptr;
std
namespace, karena mereka berada dalam standar C ++ 0x. (Saya pikir mereka mungkin di std::tr1
namespace juga, untuk kompatibilitas ke belakang).
Utas ini sudah ada beberapa lama, dan saya pikir saya akan menambahkan sesuatu tentang BAGAIMANA membangun Boost secepat mungkin pada perangkat keras spesifik Anda.
Jika Anda memiliki 4 atau 6-core gunakan -j5 atau -j7 masing-masing. Tentunya bukan standar build -j2 kecuali Anda memang memiliki dual core.
Saya menjalankan Sandy Bridge Extreme dengan stock clock 3930K (6-core) di stasiun utama saya, tetapi memiliki 2600k (4-core) pada kotak cadangan yang lebih lama, dan trennya adalah saya mendapatkan waktu kompilasi Boost terbaik dengan N + 1 proses membangun di mana N adalah jumlah inti fisik. N + 2 mencapai titik pengembalian menurun dan waktu naik.
Catatan: Hyperthreading diaktifkan, 32GB RAM DDR3, Samsung 840 EVO SSD.
-j7 pada 6-core (2 menit dan 51 detik) (Win7 Ultimate x64) (Visual Studio 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 2
Seconds : 51
Milliseconds : 128
Ticks : 1711281830
TotalDays : 0.0019806502662037
TotalHours : 0.0475356063888889
TotalMinutes : 2.85213638333333
TotalSeconds : 171.128183
TotalMilliseconds : 171128.183
-j6 pada 6-core (3 menit dan 2 detik) (Win7 Ultimate x64) (Visual Studio 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 3
Seconds : 2
Milliseconds : 809
Ticks : 1828093904
TotalDays : 0.00211584942592593
TotalHours : 0.0507803862222222
TotalMinutes : 3.04682317333333
TotalSeconds : 182.8093904
TotalMilliseconds : 182809.3904
-j8 pada 6-core (3 menit dan 17 detik) (Win7 Ultimate x64) (Visual Studio 2013)
PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }
Days : 0
Hours : 0
Minutes : 3
Seconds : 17
Milliseconds : 652
Ticks : 1976523915
TotalDays : 0.00228764342013889
TotalHours : 0.0549034420833333
TotalMinutes : 3.294206525
TotalSeconds : 197.6523915
TotalMilliseconds : 197652.3915
Konfigurasi
Building the Boost C++ Libraries.
Performing configuration checks
- 32-bit : yes (cached)
- arm : no (cached)
- mips1 : no (cached)
- power : no (cached)
- sparc : no (cached)
- x86 : yes (cached)
- has_icu builds : no (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
- zlib : no (cached)
- iconv (libc) : no (cached)
- iconv (separate) : no (cached)
- icu : no (cached)
- icu (lib64) : no (cached)
- message-compiler : yes (cached)
- compiler-supports-ssse3 : yes (cached)
- compiler-supports-avx2 : yes (cached)
- gcc visibility : no (cached)
- long double support : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
- zlib : no (cached)
Saya perhatikan pembangunan 64-bit membutuhkan waktu lebih lama, saya perlu melakukan perbandingan yang sama untuk itu dan memperbarui.
Juga sedikit catatan: Jika Anda ingin mengurangi waktu kompilasi, Anda dapat menambahkan bendera
-j2
untuk menjalankan dua build paralel pada saat yang sama. Ini mungkin mengurangi untuk menonton satu film;)
-j2
akan meningkatkan nilai jawaban Anda.
Unduh peningkatan dari: http://www.boost.org/users/download/ misalnya oleh svn
Setelah itu: cmd -> buka direktori boost ("D: \ boostTrunk" - di mana Anda checkout atau mengunduh dan mengekstrak paket): command: bootstrap
kami membuat bjam.exe di ("D: \ boostTrunk") Setelah itu: perintah: bjam toolset = msvc-10.0 varian = debug, lepaskan threading = multi tautan = statis (Ini akan memakan waktu ~ 20 menit.)
Setelah itu: Buka Visual studio 2010 -> buat proyek kosong -> buka properti proyek -> atur:
Rekatkan kode ini dan periksa apakah berfungsi?
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>
using namespace std;
struct Hello
{
Hello(){
cout << "Hello constructor" << endl;
}
~Hello(){
cout << "Hello destructor" << endl;
cin.get();
}
};
int main(int argc, char**argv)
{
//Boost regex, compiled library
boost::regex regex("^(Hello|Bye) Boost$");
boost::cmatch helloMatches;
boost::regex_search("Hello Boost", helloMatches, regex);
cout << "The word between () is: " << helloMatches[1] << endl;
//Boost shared pointer, header only library
boost::shared_ptr<Hello> sharedHello(new Hello);
return 0;
}
Sumber daya: https://www.youtube.com/watch?v=5AmwIwedTCM
Inilah cara saya dapat menggunakan Boost:
Anda akan dapat membangun proyek Anda tanpa kesalahan!
Pemasang Windows yang berada di sini berfungsi dengan baik untuk saya. Saya mengambil langkah-langkah berikut:
Semoga berhasil!
Tambahan kecil untuk jawaban utama KTC yang sangat informatif:
Jika Anda menggunakan Visual Studio c ++ 2010 Express gratis, dan berhasil membuatnya untuk mengkompilasi binari 64-bit, dan sekarang ingin menggunakannya untuk menggunakan versi 64-bit dari perpustakaan Boost, Anda mungkin berakhir dengan 32- bits libraries (jarak tempuh Anda mungkin berbeda tentu saja, tetapi pada komputer saya ini adalah kasus yang menyedihkan).
Saya bisa memperbaikinya dengan menggunakan hal berikut: di antara langkah-langkah yang dijelaskan di atas sebagai
Saya memasukkan panggilan ke 'setenv' untuk mengatur lingkungan. Untuk versi rilis, langkah-langkah di atas menjadi:
Saya menemukan info ini di sini: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
Contoh minimalis untuk membantu Anda memulai di Visual Studio:
1. Unduh dan hapus zip Boost dari sini.
2. Buat proyek kosong Visual Studio, menggunakan contoh boost perpustakaan yang tidak memerlukan kompilasi terpisah:
#include <iostream>
#include <boost/format.hpp>
using namespace std;
using namespace boost;
int main()
{
unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };
cout << format("%02X-%02X-%02X-%02X-%02X")
% arr[0]
% arr[1]
% arr[2]
% arr[3]
% arr[4]
<< endl;
}
3. Di properti proyek Visual Studio Anda, setel Direktori Sertakan Tambahan:
Untuk contoh yang sangat sederhana:
Cara Memasang Boost Libraries di Visual Studio
Jika Anda tidak ingin menggunakan seluruh pustaka boost, hanya sebagian saja:
Menggunakan subset dari boost library di Windows
Jika Anda ingin secara khusus sekarang tentang perpustakaan yang membutuhkan kompilasi:
Selain itu, ada sesuatu yang menurut saya sangat berguna. Gunakan variabel lingkungan untuk jalur peningkatan Anda. (Cara mengatur variabel lingkungan di windows, tautan di bawah untuk 7,8,10) Variabel BOOST_ROOT tampaknya menjadi tempat umum lagi dan disetel ke jalur root tempat Anda unzip boost.
Kemudian di Properties, c ++, general, Tambahan Sertakan Direktori gunakan $(BOOST_ROOT)
. Kemudian jika / ketika Anda pindah ke versi yang lebih baru dari perpustakaan boost Anda dapat memperbarui variabel lingkungan Anda untuk menunjuk ke versi yang lebih baru ini. Karena semakin banyak proyek Anda, gunakan peningkatan Anda tidak perlu memperbarui 'Direktori Sertakan Tambahan' untuk semuanya.
Anda juga dapat membuat variabel BOOST_LIB dan mengarahkannya ke tempat libs dipentaskan. Demikian juga untuk Linker-> Direktori Perpustakaan Tambahan, Anda tidak perlu memperbarui proyek. Saya memiliki beberapa hal lama yang dibangun dengan vs10 dan hal-hal baru dengan vs14 sehingga membangun kedua rasa dorongan lib ke folder yang sama. Jadi jika saya memindahkan proyek dari vs10 ke vs14 saya tidak perlu mengubah jalur peningkatan.
CATATAN: Jika Anda mengubah variabel lingkungan, itu tidak akan tiba-tiba berfungsi di proyek VS terbuka. VS memuat variabel saat startup. Jadi, Anda harus menutup VS dan membukanya kembali.