Una de las muchas grandes ventajas de usar C ++ para aplicaciones y proyectos es el acceso que se tiene a la amplia biblioteca de bibliotecas y marcos de C ++ disponibles. Básicamente, hay una biblioteca C ++ para cualquier cosa, y si no la hay, definitivamente hay una biblioteca C para ello.
En el pasado, generalmente era un desafío integrar diferentes bibliotecas en proyectos de C ++ debido a las variaciones en la compatibilidad entre los diferentes compiladores de C ++. Un proyecto construido con GCC tendría problemas para compilar en VC ++, y un proyecto construido con VC ++ tendría problemas para compilar en BCC, etc. Afortunadamente, hemos recorrido un largo camino desde esos días y el compilador de C ++ ahora tiene un nivel sustancial de compatibilidad con mutuamente.
El uso de CLANG de C ++ Builder no es una excepción a esto. Si bien el compilador clásico a menudo tiene problemas con la sintaxis moderna de C ++, el compilador CLANG es uno de los compiladores de C ++ más compatibles con los estándares disponibles y, como tal, abre el vasto universo de bibliotecas de C ++ a sus proyectos de C ++ Builder.
Esto no quiere decir que sea trivial. Siempre hay algunos trucos y ajustes que uno debe hacer para usar cualquier biblioteca en sus proyectos, pero en comparación con lo que era necesario antes, es muy fácil.
En esta publicación de blog, exploraremos lo que se necesita para obtener una biblioteca de C ++ bastante común, SQLiteCpp, que funcione en un proyecto de C ++ Builder.
Table of Contents
¿Qué es SQLiteCpp?
SQLiteCpp es un contenedor C ++ RAII alrededor de la biblioteca C de la base de datos sqlite, que proporciona una excelente interfaz C ++ para esta biblioteca de base de datos relacional portátil casi universal.
Sqlite se utiliza en muchas aplicaciones diferentes que van desde proyectos integrados hasta aplicaciones convencionales como una base de datos integrada fácil de usar para almacenar, consultar y recuperar datos de muchos tipos diferentes.
Usaremos SQLiteCpp para crear una aplicación simple que almacena y recupera algunos datos dentro de una aplicación de consola simple en C ++ Builder.
Obtener la biblioteca
SQLiteCpp está alojado en Github y el repositorio incluye todos los archivos necesarios para compilar en su aplicación.
1. Vaya a https://github.com/SRombauts/SQLiteCpp
2. Descargue la última versión y extráigala en una carpeta.
Configurar los proyectos
SQLiteCpp admite el sistema de compilación CMake, por lo que podríamos usarlo para compilar nuestras bibliotecas con C ++ Builder, pero a menudo es más interesante y directo crear los proyectos usted mismo. Esto tiene la ventaja adicional de que puede personalizar la construcción para que se adapte a su uso.
3. Cree un directorio dentro de la carpeta de extracción llamado cbuilder. Este contendrá nuestros archivos de proyecto específicos de C ++ Builder. La estructura de directorio resultante debería verse así:
4. Queremos construir esta biblioteca como una biblioteca estática que podamos vincular a nuestra aplicación C ++ Builder, así que vaya a RAD Studio y cree un nuevo proyecto de biblioteca estática. Guarde este proyecto como sqlitecpp.cbproj dentro del directorio cbuilder.
5. Vaya a las Opciones del proyecto y habilite el compilador CLANG para todas las configuraciones:
6. Vaya a la configuración de Bibliotecario y establezca el Tamaño de página en 64 (esto se basa en la experiencia; si no sabe el tamaño de página que debe usar, el enlazador TLIB le dirá si el tamaño de la página debe ajustarse cuando cree el proyecto)
Seleccionar los archivos de origen
Ahora que tenemos nuestro proyecto configurado, debemos agregar los archivos fuente necesarios al proyecto que se compilará. La forma de determinar qué archivos incluir difiere para cada proyecto y, a veces, es necesario investigar un poco para determinar los archivos correctos. CMakeLists.txt definitivamente puede ayudar con esto. Las siguientes pautas deberían ayudar:
- Busque un directorio src, los archivos con una extensión .c, .cpp o .cxx serán los archivos de origen
- Ignore los archivos que contienen un método main (). Por lo general, se trata de archivos de prueba, demostración o ejemplo que están destinados a ser aplicaciones independientes.
Para SQLiteCpp, estos son los archivos fuente:
- sqlite3 / sqlite3.c
- src / Transaction.cpp
- src / Backup.cpp
- src / Column.cpp
- src / Database.cpp
- src / Exception.cpp
- src / Statement.cpp
7. Agregue estos archivos al proyecto de biblioteca.
Construyendo la Biblioteca
Si intentara construir esta biblioteca ahora mismo, obtendría algunos errores similares a los siguientes:
Necesitamos actualizar algunas opciones del proyecto y establecer algunas rutas de inclusión.
8. Establezca la ruta de inclusión. Es posible que haya notado que el proyecto tiene un directorio de inclusión que está al mismo nivel que los archivos src. Agregue esta carpeta a la ruta de inclusión del proyecto para que se puedan encontrar los encabezados:
9. Genere el proyecto. Debería completarse con éxito. Felicitaciones, ahora tiene su biblioteca SQLiteCpp.
Usando la biblioteca
Ahora que tenemos nuestra biblioteca, podemos crear una aplicación simple para probarla.
10. Cree una nueva aplicación de consola C ++ en el mismo grupo de proyectos. Elija Visual Component Library como marco para la aplicación de consola para que podamos ver esta biblioteca trabajando con la VCL.
11. Guarde este proyecto como test_sqlite.cbproj en la carpeta cbuilder.
12. Vaya a Opciones de proyecto para este proyecto y agregue ..include como ruta de inclusión para este proyecto y habilite el compilador CLANG, tal como hicimos para la biblioteca SQLiteCpp.
13. Agregue las rutas de inclusión en la parte superior del archivo C ++ en nuestro proyecto de prueba:
Tenga en cuenta que usamos el directorio de enlaces #pragma para decirle al compilador que necesitamos vincular la biblioteca sqlitecpp.lib desde el proyecto de la biblioteca. Alternativamente, puede agregar el archivo .lib al proyecto de prueba, pero usar el enlace #pragma puede simplificarlo.
14. Ahora agregue un código para crear una base de datos, inserte algunos datos y vuelva a leerlos:
15. Finalmente, ejecute el proyecto para compilarlo y vea la biblioteca en funcionamiento:
Pensamientos finales
Como ha demostrado este sencillo ejercicio, C ++ Builder con el compilador CLANG abre un mundo de posibilidades para las diferentes bibliotecas y marcos que pueden integrarse en sus proyectos. No tuvimos que hacer un solo cambio de código para que esta biblioteca C ++ de código abierto se compilara y funcionara en nuestras aplicaciones C ++ Builder.
Hay miles de otros proyectos de C ++ por ahí y puedo animarle a que experimente usándolos en sus proyectos de C ++.