Compilação da Biblioteca Boost no Ambiente Windows

Compilação da Biblioteca Boost 1.69.0 no Windows

Download do Boost 1.69.0

Baixe o arquivo boost_1_69_0.zip do site oficial do Boost. Extraia o conteúdo para um diretório de sua escolha, por exemplo, E:\fonte\boost_1_69_0.

Compilação do Boost 1.69.0

No diretório extraído, execute o script bootstrap.bat. Isso gerará a ferramenta de build bjam.exe no mesmo local.

Para compilar uma biblioteca específica, como program_options, utilize o comando a seguir. Este exemplo configura uma compilação estática para 32 bits:


bjam install --prefix="D:\libs\boost" debug release link=static runtime-link=static threading=multi address-model=32 --with-program_options

Parâmetros detalhados:

  • --prefix: Define o caminho de instalação para as bibliotecas geradas.
  • debug release: Compila tanto a versão de depuração quanto a de lançamento.
  • link=static: Gera bibliotecas estáticas. Utilize shared para bibliotecas dinâmicas.
  • runtime-link=static: Realiza vínculo estático com as bibliotecas de tempo de execução do C/C++.
  • threading=multi: Ativa a compilação para múltiplas threads. Use single para single-thread.
  • address-model=32: Especifica a arquitetura alvo de 32 bits. Substitua por 64 para 64 bits.
  • --with-program_options: Indica qual subbiblioteca compilar. Modifique este parâmetro de acordo com suas necessidades.

Observação: Compilar apenas as bibliotecas estritamente necessárias reduz significativamente o tempo do prcoesso.

Após a execução bem-sucedida, os artefatos compilados serão copiados para o diretório definido em --prefix.

Utilizando a Biblioteca Boost.ProgramOptions

Configuração com CMake

Crie um arquivo CMakeLists.txt com a seguinte configuração:


cmake_minimum_required(VERSION 3.10)
projeto(ExemploBoost)

encontrar_pacote(Boost COMPONENTS program_options REQUIRED)
incluir_diretorios(${Boost_INCLUDE_DIRS})
vincular_diretorios(${Boost_LIBRARY_DIRS})

arquivo(GLOB ARQUIVOS_FONTE *.cpp)
adicionar_executavel(${PROJECT_NAME} ${ARQUIVOS_FONTE})

A chamada encontrar_pacote() localiza o Boost e importa o módulo program_options. As diretivas subsequentes configuram os caminhos de inclusão e vinculação para o compilador e o linker.

Exemplo de Código em C++

Implemente um arquivo main.cpp conforme o exemplo abaixo:


#include <boost/program_options.hpp>
namespace opcoes = boost::program_options;

#include <iostream>
using namespace std;

int main(int num_args, char** argumentos)
{
    int fator_compactacao = -1;
    opcoes::options_description configuracoes("Opções disponíveis");
    configuracoes.add_options()
        ("ajuda,a", "Exibe informações de uso")
        ("compactacao,k", opcoes::value<int>(&fator_compactacao)->default_value(10), "Ajusta o nível de compactação");

    opcoes::variables_map mapa_valores;
    try
    {
        opcoes::store(opcoes::parse_command_line(num_args, argumentos, configuracoes), mapa_valores);
        opcoes::notify(mapa_valores);

        if (mapa_valores.count("ajuda"))
        {
            cout << configuracoes << endl;
            return 0;
        }

        if (mapa_valores.count("compactacao"))
        {
            cout << "Nível de compactação configurado: " << fator_compactacao << endl;
        }
        else
        {
            cout << "Nível de compactação não especificado." << endl;
        }
    }
    catch (std::exception& erro)
    {
        std::cout << erro.what() << std::endl;
        return 1;
    }
    return 0;
}

No fragmento, opcoes::value<int>(&fator_compactacao) associa o argumento da linha de comando à variável fator_compactacao. A função default_value(10) estabelece um valor padrão; se omitida, o parâmetro torna-se obrigatório.

Tags: boost C++ CMake Boost.ProgramOptions Windows

Publicado em 7-12 19:52