Uma das muitas grandes vantagens de usar C ++ para aplicativos e projetos é o acesso que se tem à vasta biblioteca de bibliotecas e frameworks C ++ disponíveis. Basicamente, existe uma biblioteca C ++ para tudo e, se não houver, definitivamente existe uma biblioteca C para ela.
No passado, geralmente era um desafio integrar diferentes bibliotecas em projetos C ++ devido às variações de compatibilidade entre os diferentes compiladores C ++. Um projeto construído com GCC teria problemas para compilar em VC ++, e um projeto construído com VC ++ teria problemas para compilar em BCC, etc. Felizmente, já percorremos um longo caminho desde aqueles dias e o compilador C ++ agora tem um nível substancial de compatibilidade com uns aos outros.
O uso de CLANG pelo C ++ Builder não é exceção a isso. Embora o compilador clássico frequentemente tenha problemas com a sintaxe C ++ moderna, o compilador CLANG é um dos compiladores C ++ mais compatíveis com os padrões disponíveis e, como tal, abre o vasto universo de bibliotecas C ++ para seus projetos C ++ Builder.
Isso não quer dizer que seja trivial. Sempre há alguns truques e ajustes que você deve fazer para usar qualquer biblioteca em seus projetos, mas em comparação ao que era necessário antes, é muito fácil.
Nesta postagem do blog, vamos explorar o que é necessário para obter uma biblioteca C ++ bastante comum, SQLiteCpp, trabalhando em um projeto C ++ Builder.
Table of Contents
O que é SQLiteCpp
SQLiteCpp é um wrapper C ++ RAII em torno da biblioteca C do banco de dados sqlite, fornecendo uma excelente interface C ++ para essa biblioteca de banco de dados relacional portátil quase universal.
O Sqlite é usado em muitos aplicativos diferentes, desde projetos incorporados a aplicativos convencionais, como um banco de dados integrado fácil de usar para armazenar, consultar e recuperar dados de muitos tipos diferentes.
Usaremos SQLiteCpp para criar um aplicativo simples que armazena e recupera alguns dados dentro de um aplicativo de console simples no C ++ Builder.
Obtendo a Biblioteca
SQLiteCpp está hospedado no Github e o repositório inclui todos os arquivos necessários para compilar em seu aplicativo.
1. Acesse https://github.com/SRombauts/SQLiteCpp
2. Baixe a versão mais recente e extraia-a em uma pasta
Configurando os Projetos
SQLiteCpp suporta o sistema de construção CMake, então poderíamos usar isso para construir nossas bibliotecas com o C ++ Builder, mas geralmente é mais interessante e direto apenas criar os projetos você mesmo. Isso tem a vantagem adicional de poder personalizar a construção para se adequar ao seu uso.
3. Crie um diretório dentro da pasta de extração chamado cbuilder. Isso conterá nossos arquivos de projeto específicos do C ++ Builder. A estrutura de diretório resultante deve ser semelhante a esta:
4. Queremos construir esta biblioteca como uma biblioteca estática que podemos vincular ao nosso aplicativo C ++ Builder, então vá para RAD Studio e crie um novo projeto de biblioteca estática. Salve este projeto como sqlitecpp.cbproj dentro do diretório cbuilder.
5. Vá para as opções do projeto e habilite o compilador CLANG para todas as configurações:
6. Vá para as configurações do Bibliotecário e defina o tamanho da página para 64 (isso é baseado na experiência – se você não souber o tamanho da página a ser usado, o linker TLIB lhe dirá se o tamanho da página precisa ser ajustado quando você construir o projeto)
Selecionando os arquivos de origem
Agora que configuramos nosso projeto, precisamos adicionar os arquivos-fonte necessários ao projeto a ser compilado. A maneira de determinar quais arquivos incluir difere para cada projeto e, às vezes, requer algumas pesquisas para determinar os arquivos certos. CMakeLists.txt pode definitivamente ajudar com isso. As seguintes diretrizes devem ajudar:
- Procure um diretório src, os arquivos com extensão .c, .cpp ou .cxx serão os arquivos de origem
- Ignore os arquivos que contêm um método main (). Geralmente, são arquivos de teste, de demonstração ou de exemplo que se destinam a ser aplicativos independentes.
Para SQLiteCpp, estes são os arquivos de origem:
- sqlite3 / sqlite3.c
- src / Transaction.cpp
- src / Backup.cpp
- src / Column.cpp
- src / Database.cpp
- src / Exception.cpp
- src / Statement.cpp
7. Adicione esses arquivos ao projeto de biblioteca.
Construindo a Biblioteca
Se você tentasse construir esta biblioteca agora, obteria alguns erros semelhantes aos seguintes:
Precisamos atualizar algumas opções de projeto e definir alguns caminhos de inclusão.
8. Defina o caminho de inclusão. Você deve ter notado que o projeto tem um diretório de inclusão que está no mesmo nível dos arquivos src. Adicione esta pasta ao caminho de inclusão do projeto para que os cabeçalhos possam ser encontrados:
9. Construa o projeto. Deve ser concluído com sucesso. Parabéns, agora você tem sua biblioteca SQLiteCpp.
Usando a Biblioteca
Agora que temos nossa biblioteca, podemos criar um aplicativo simples para testá-la.
10. Crie um novo aplicativo de console C ++ no mesmo grupo de projetos. Escolha a Biblioteca de Componentes Visuais como estrutura para o aplicativo de console para que possamos ver esta biblioteca funcionando com a VCL.
11. Salve este projeto como test_sqlite.cbproj na pasta cbuilder.
12. Vá em Opções de projeto para este projeto e adicione ..include como um caminho de inclusão para este projeto e habilite o compilador CLANG, assim como fizemos para a biblioteca SQLiteCpp.
13. Adicione os caminhos de inclusão na parte superior do arquivo C ++ em nosso projeto de teste:
Observe que usamos o diretório de link #pragma para informar ao compilador que precisamos vincular a biblioteca sqlitecpp.lib do projeto de biblioteca. Como alternativa, você pode simplesmente adicionar o arquivo .lib ao projeto de teste, mas usar o link #pragma pode tornar isso mais simples.
14. Agora adicione algum código para criar um banco de dados, insira alguns dados e leia novamente:
15. Por fim, execute o projeto para compilá-lo e ver a biblioteca em operação:
Pensamentos finais
Como este exercício simples demonstrou, C ++ Builder com o compilador CLANG abre um mundo de possibilidades para as diferentes bibliotecas e estruturas que podem ser integradas em seus projetos. Não precisamos fazer uma única alteração no código para que essa biblioteca C ++ de código aberto compile e funcione em nossos aplicativos C ++ Builder.
Existem milhares de outros projetos C ++ por aí e eu posso encorajá-lo fortemente a experimentá-los em seus projetos C ++!