Qual é uma boa explicação passo a passo sobre como usar a biblioteca Boost em um projeto vazio no Visual Studio?
c++
visual-studio-2010
boost
OlimilOops
fonte
fonte
Respostas:
Embora a resposta de Nate já seja bastante boa, vou expandi-la mais especificamente para o Visual Studio 2010, conforme solicitado, e incluir informações sobre a compilação nos vários componentes opcionais que requerem bibliotecas externas.
Se você estiver usando apenas bibliotecas de cabeçalhos, tudo o que você precisa fazer é desarquivar o download do impulso e configurar as variáveis de ambiente. As instruções abaixo definem as variáveis de ambiente apenas para o Visual Studio e não em todo o sistema. Observe que você só precisa fazer isso uma vez.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
e selecioneProperties
para abrir a Página de propriedades para edição.VC++ Directories
à esquerda.Include Directories
seção para incluir o caminho para seus arquivos de origem do impulso.Se você deseja usar a parte do impulso que requer construção, mas nenhum dos recursos que requer dependências externas, a construção é bastante simples.
C:\boost_1_47_0
).bootstrap.bat
para criar o b2.exe (anteriormente chamado bjam).Execute b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Faça uma caminhada / assista a um filme ou 2 / ....
Library Directories
seção para incluir o caminho para a saída das bibliotecas de reforço. (O padrão para o exemplo e as instruções acima seriaC:\boost_1_47_0\stage\lib
. Renomeie e mova o diretório primeiro se desejar ter x86 e x64 lado a lado (como<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Se você deseja os componentes opcionais, tem mais trabalho a fazer. Esses são:
Filtros Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
ao executar b2 na etapa 5.Filtros Boost.IOStreams Zlib
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
ao executar b2 na etapa 5.Boost.MPI
project-config.jam
no diretório<BOOST_PATH>
que resultou da execução do bootstrap. Adicione uma linha que leiausing mpi ;
(observe o espaço antes do ';').Boost.Python
Para criar completamente a versão de 32 bits da biblioteca, é necessário Python de 32 bits e da mesma forma para a versão de 64 bits. Se você tiver várias versões instaladas por esse motivo, precisará informar ao b2 onde encontrar uma versão específica e quando usar qual. Uma maneira de fazer isso seria editar o arquivo
project-config.jam
no diretório<BOOST_PATH>
resultante da execução do bootstrap. Adicione as duas linhas a seguir, ajustando conforme apropriado para os caminhos e versões de instalação do Python (observe o espaço antes do ';').using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Observe que essa especificação explícita do Python atualmente causa falha na compilação do MPI. Portanto, você precisará criar um edifício separado, com e sem especificação, para construir tudo, se estiver criando o MPI também.
Siga o segundo conjunto de instruções acima para aumentar o impulso.
Suporte para Boost.Regex ICU
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
ao executar b2 na etapa 5.fonte
Embora as instruções no site do Boost sejam úteis, aqui está uma versão condensada que também cria bibliotecas x64.
Construir as bibliotecas de 32 bits
Isso instala os arquivos de cabeçalho Boost em
C:\Boost\include\boost-(version)
e as bibliotecas de 32 bits emC:\Boost\lib\i386
. Observe que o local padrão para as bibliotecas é,C:\Boost\lib
mas você deseja colocá-las em umi386
diretório se planeja construir para várias arquiteturas.bootstrap
Corre:
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
Adicionar
C:\Boost\include\boost-(version)
ao seu caminho de inclusão.C:\Boost\lib\i386
ao seu caminho de bibliotecas.Construa as bibliotecas de 64 bits
Isso instala os arquivos de cabeçalho do Boost em
C:\Boost\include\boost-(version)
e as bibliotecas de 64 bits emC:\Boost\lib\x64
. Observe que o local padrão para as bibliotecas é,C:\Boost\lib
mas você deseja colocá-las em umx64
diretório se planeja construir para várias arquiteturas.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)
ao seu caminho de inclusão.C:\Boost\lib\x64
ao seu caminho de bibliotecas.fonte
Você também pode tentar -j% NUMBER_OF_PROCESSORS% como argumento para usar todos os seus núcleos. Torna as coisas super rápidas no meu quad core.
fonte
Eu poderia recomendar o seguinte truque: Crie um
boost.props
arquivo especialEste procedimento tem o valor de que o aumento é incluído apenas em projetos nos quais você deseja incluí-lo explicitamente. Quando você tiver um novo projeto que use boost, faça:
EDIT (edição seguinte de @ jim-fred):
O
boost.props
arquivo resultante é mais ou menos assim ...Ele contém uma macro de usuário para o local do diretório boost (neste caso, D: \ boost_1_53_0) e dois outros parâmetros: IncludePath e LibraryPath. Uma afirmação
#include <boost/thread.hpp>
encontraria o thread.hpp no diretório apropriado (nesse caso, D: \ boost_1_53_0 \ boost \ thread.hpp). O diretório 'stage \ lib \' pode mudar dependendo do diretório instalado no.Esse arquivo boost.props pode estar localizado no
D:\boost_1_53_0\
diretóriofonte
Quais partes do Boost você precisa? Muitas coisas fazem parte do TR1, que é enviado com o Visual Studio, então você pode simplesmente dizer, por exemplo:
De acordo com James, isso também deve funcionar (em C ++ 0x):
fonte
std
namespace, como estão no padrão C ++ 0x. (Acho que eles provavelmente também estão nostd::tr1
espaço para nome, para compatibilidade com versões anteriores).Esse tópico já existe há algum tempo e eu pensei em adicionar algo sobre COMO criar o Boost o mais rápido possível em seu hardware específico.
Se você possui um núcleo de 4 ou 6 núcleos, use -j5 ou -j7, respectivamente. Certamente não é a construção padrão nem -j2, a menos que você realmente tenha um núcleo dual.
Estou executando um Sandy Bridge Extreme com 3930K (6 núcleos) com clock de estoque na minha estação principal, mas tenho uma caixa de backup mais antiga de 2600k (4 núcleos) e a tendência é obter os melhores tempos de compilação do Boost com N + 1 constrói processos em que N é o número de núcleos físicos. N + 2 atinge um ponto de retornos decrescentes e os tempos aumentam.
Notas: O Hyperthreading está ativado, 32 GB de RAM DDR3, SSD Samsung 840 EVO.
-j7 em 6 núcleos (2 minutos e 51 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
-j6 em 6 núcleos (3 minutos e 2 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 em 6 núcleos (3 minutos e 17 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
Config
Observo que a compilação de 64 bits demora um pouco mais, preciso fazer a mesma comparação e atualizar.
fonte
Também uma pequena observação: se você deseja reduzir o tempo de compilação, pode adicionar a sinalização
para executar duas construções paralelas ao mesmo tempo. Isso pode reduzir a exibição de um filme;)
fonte
-j2
aumentaria o valor da sua resposta.Download boost em: http://www.boost.org/users/download/ por exemplo, por svn
Depois disso: cmd -> vá para o diretório boost ("D: \ boostTrunk" - onde você faz o checkout ou baixa e extrai o pacote): command: bootstrap
criamos o bjam.exe em ("D: \ boostTrunk") Depois disso: comando: bjam toolset = variante msvc-10.0 = depuração, lançamento threading = multi link = static (isso levará algum tempo ~ 20 minutos).
Depois disso: Abra o Visual studio 2010 -> crie um projeto vazio -> vá para as propriedades do projeto -> defina:
Cole este código e verifique se está funcionando?
Recursos: https://www.youtube.com/watch?v=5AmwIwedTCM
fonte
Aqui está como eu pude usar o Boost:
Você poderá criar seu projeto sem erros!
fonte
Os instaladores do Windows localizados aqui funcionaram perfeitamente para mim. Eu tomei as seguintes etapas:
Boa sorte!
fonte
Uma pequena adição à resposta principal muito informativa do KTC:
Se você estiver usando o Visual Studio c ++ 2010 Express gratuito e conseguiu que ele compile binários de 64 bits, e agora deseja usá-lo para usar uma versão de 64 bits das bibliotecas do Boost, você pode acabar com 32 bibliotecas de bits (sua milhagem pode variar, é claro, mas na minha máquina esse é o caso triste).
Eu poderia corrigir isso usando o seguinte: entre as etapas descritas acima como
Inseri uma chamada para 'setenv' para definir o ambiente. Para uma versão compilada, as etapas acima se tornam:
Encontrei essas informações aqui: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
fonte
Um exemplo minimalista para você começar no Visual Studio:
1. Download e descompacte o Boost a partir daqui.
2.Crie um projeto vazio do Visual Studio, usando uma biblioteca de exemplo de reforço que não exija compilação separada:
3. Nas propriedades do projeto do Visual Studio, defina os Diretórios de Inclusão Adicionais:
Para um exemplo muito simples:
Como instalar as bibliotecas de impulso no Visual Studio
Se você não quiser usar a biblioteca de impulso inteira, apenas um subconjunto:
Usando um subconjunto das bibliotecas de reforço no Windows
Se você deseja especificamente agora as bibliotecas que exigem compilação:
Como usar as bibliotecas compiladas Boost no Windows
fonte
Além disso, há algo que acho muito útil. Use variáveis de ambiente para seus caminhos de impulso. (Como definir variáveis de ambiente no Windows, vincule na parte inferior por 7,8,10) A variável BOOST_ROOT parece ser mais um local comum e é definida como o caminho raiz no qual você descompacta o impulso.
Em Propriedades, c ++, general, Diretórios de Inclusão Adicionais usam
$(BOOST_ROOT)
. Então, se / quando você mudar para uma versão mais recente da biblioteca de reforço, poderá atualizar sua variável de ambiente para apontar para esta versão mais recente. À medida que mais de seus projetos, use boost, você não precisará atualizar os 'Diretórios de Inclusão Adicionais' para todos eles.Você também pode criar uma variável BOOST_LIB e apontar para onde as bibliotecas são preparadas. Da mesma forma, para o Linker-> Diretórios Adicionais da Biblioteca, você não precisará atualizar os projetos. Eu tenho algumas coisas antigas construídas com o vs10 e coisas novas com o vs14, então criei os dois sabores da lib boost na mesma pasta. Portanto, se eu mover um projeto do vs10 para o vs14, não preciso alterar os caminhos do impulso.
NOTA: Se você alterar uma variável de ambiente, ela não funcionará repentinamente em um projeto VS aberto. O VS carrega variáveis na inicialização. Então você terá que fechar o VS e reabri-lo.
fonte