Files of check-in [6c22637ceb] in the top-level directory
A libtabula Primer
What It Is
libtabula is a C++ wrapper for multiple C database APIs including SQLite, MariaDB, and MySQL's Connector/C. It is built around STL principles to make dealing with the database as easy as dealing with an STL container. libtabula relieves the programmer of dealing with cumbersome C data structures, generation of repetitive SQL statements, and manual creation of C++ data structures to mirror the database schema.
libtabula's home page is
libtabula forked from MySQL++ 3.2.1 in May 2014. The name change reflects the fact that libtabula works with more than just MySQL and its API-compatible forks.
To build a release version of libtabula, you must have the C API development files installed for the DBMSes you want libtabula to work with.
To build a version checked out from the Fossil repository, see the HACKERS file.
Additional Things to Read
Each major platform we support has a dedicated
README-*.md file for
it containing information specific to that platform. Please read it:
For authorship information, see the CREDITS file.
For license information, see the COPYING file.
If you want to change libtabula, see the HACKERS file.
You should have received a user manual and a reference manual with libtabula. If not, you can read a recent version online.
Search the libtabula mailing list archives if you have more questions.
Building the Library
libtabula uses CMake to generate platform-specific build files from a platform-independent set of build rules. We have successfully used it to build libtabula under these native build system types:
Makefiles: For Unixy platforms, including Linux, macOS, Cygwin, and MinGW, in addition to the "real" Unices.
See the Unix README for general instructions.
There are supplementary platform-specific
READMEfiles for most popular Unixy platforms:
TODO: Write README-Free/Net/OpenBSD.md, if only to mention the location for C API files.
If your platform of choice doesn't have a
READMEdedicated to it, little is probably known about builing libtabula on and for it. Consider writing such a file and posting it to the mailing list.
Visual C++: CMake will generate Visual Studio solution and project files for any version of Visual C++ you have installed, going back to (and beyond!) the oldest version libtabula actually works with, Visual C++ 2003.
See the Visual C++ README for more details.
Xcode: CMake will generate an Xcode project file instead of Makefiles on OS X if you ask nicely.
See the macOS README for more the proper incantation.
CMake can generate many other kinds of IDE project files, but we have either not tried it, or have not succeeded with it. Success reports and patches are welcome on the mailing list.3
You may want to try out the programs in the examples subdirectory to ensure that libtabula is working correctly in its own right as well as working properly with your DBMS.
These examples give many examples of the proper use of libtabula. See the examples README for further details.
If you're on Windows but want to use some other compiler besides Visual C++ or GCC, you are currently on your own. There have been past efforts to port libtabula to other Windows compilers, but for one reason or another, all of these ports have died.
On Unixy systems, GCC and Clang work best. "Native" compilers and third-party compilers may work, but you're on your own to get it working.
We have nothing in particular against these unsupported systems. We just lack the time and interest to support everything ourselves. If you are sufficiently motivated to get libtabula working on one of these alternate systems, see the HACKERS file first for guidance. If you follow the advice in that file, your patch will be more likely to be accepted.
If You Want to Hack on libtabula...
If you intend to change the library or example code, please read the HACKERS file.
If you want to change the user manual, read the doc README
If you want to change the reference manual, see the Doxygen manual.