2009-10-01 7 views

risposta

1

Sì, la maggior parte delle librerie di boost sono solo intestazione quindi non è necessario compilare alcun file sorgente.

2

La maggior parte di boost è distribuita come librerie "solo intestazione", il che significa che non è necessario "creare" alcuna cosa gentile per utilizzare quella libreria. Random è uno di quelli, quindi è possibile includere solo i file di intestazione corretti e si sarà via ridendo. Direi che è meglio ottenere l'intera fonte di boost da qualche parte, e fare riferimento al fatto che le diverse parti tendono ad avere alcune dipendenze l'una dall'altra.

1

Sì, per utilizzare boost::random, è possibile includere semplicemente l'intestazione nel file di origine.

Poiché Boost utilizza estensivamente i modelli, molte delle librerie sono implementate esclusivamente nelle intestazioni (e nei file di implementazione del modello, a la txx).

La maggior parte delle librerie è anche indipendente, quindi è possibile utilizzarne solo una senza dipendere da un'altra. (Le eccezioni sono documentate.)

Se si guarda il numero list of Boost libraries, vedrete molti di essi etichettati come "Solo intestazione", quindi non c'è nessuna libreria aggiuntiva a cui collegarsi.

7

L'unica cosa da fare attenzione è aggiungere il percorso per aumentare nel percorso di inclusione. Anche se le librerie sono solo intestazioni, molte intestazioni di boost includono altre intestazioni nella libreria boost e non saranno in grado di trovarle se il percorso di inclusione non è impostato correttamente.

Il mio progetto attuale ha questo percorso di inclusione:

/I "C:\Program Files\boost\boost_1_39" 

Il mio codice comprende quindi le intestazioni di spinta come questo:

#include <boost/random.hpp> 

boost/random.hpp ha un sacco di linee come #include " boost/random/linear_congruential.hpp ", motivo per cui è necessario il percorso di inclusione.

0

come andrei circa appena usando questo e solo questa libreria

io non sono sicuro di quello che la vostra preoccupazione è qui. Anche se hai incluso altre intestazioni e/o collegate altre librerie, il tuo eseguibile finale includerà solo le parti della libreria necessarie per risolvere i simboli nel tuo codice. Non getterà moduli oggetto inutilizzati. Il codice e i template inline nelle intestazioni non vengono istanziati a meno che non siano referenziati.

Poiché Boost è principalmente una libreria di modelli e per ovviare alla mancanza di consapevolezza dei modelli nella maggior parte dei linker, il codice è sottolineato nel file di intestazione, i modelli istanziati vengono compilati nel modulo di ciascun oggetto in cui viene istanziato. Così si può finire con il codice duplicato in più moduli, che se dimensioni eseguibili se la vostra preoccupazione, si dovrebbe forse essere a conoscenza.

22

Boost ha uno strumento molto bello chiamato bcp che fa quello che vuoi. controlla.

dalla documentazione:

bcp boost/regex.hpp /foo 

Copies boost/regex.hpp and all dependencies including the regex source code 
(in libs/regex/src) and build files (in libs/regex/build) to /foo. Does not 
copy the regex documentation, test, or example code. 
Problemi correlati