2009-10-29 2 views

risposta

21

Molte distribuzioni includono boost nei loro repository ufficiali, ma non lo forniscono di default su un'installazione standard (in altre parole, non è installato di default, ma è relativamente facile da installare).

D'altra parte, supponendo che tu stia chiedendo questo perché ti stai chiedendo se puoi usare boost in un progetto su cui vuoi lavorare su molte distribuzioni: la maggior parte delle librerie di boost sono intestazione solo perché sono modelli, il che significa che vengono compilati nel progetto e non importa se una distribuzione li ha installati o meno (stesso effetto del collegamento statico).

Per quelle parti di boost che non sono solo intestazione, è possibile collegare staticamente e creare ancora un binario che verrà eseguito su distro che non vengono fornite con boost.

+0

Mi stai leggendo! – jldupont

+1

+1 sulla distinzione tra modelli e librerie – Javier

+2

È anche possibile collegare in librerie statiche, se si utilizza una delle librerie che non è solo intestazione, è sempre possibile creare un binario distribuibile. Il trucco è se si vuole che l'utente sia in grado di costruirlo da sé, quindi hanno bisogno delle intestazioni (e delle librerie se necessario), ma se stanno costruendo roba da soli, probabilmente non è troppo chiedere. – teeks99

1

Attenzione, le distro con Boost incluso possono includere una versione molto vecchia di Boost. Ho scoperto che questo può causare un sacco di piccoli problemi.

Ad esempio, troverete una classe whiz-bang che è in boost v.latest e non nella versione v.included. Se la classe del whiz-bang è solo "headers only", puoi ovviare a questo abbastanza facilmente. Se detta classe coinvolge una libreria il fattore di dolore aumenta (i binari esistenti vorranno le librerie condivise della versione v.incluse - il tuo codice vorrà v.latest).

Sono sicuro che tutti questi problemi possono essere risolti, ma probabilmente sono più di quelli previsti per entrare, quindi prenotate un po 'di tempo nel vostro programma/sprint per affrontarli.