libUTL++ is a cross-platform C++ class library that provides a set of commonly useful functionality and abstractions to expedite C++ application development.
Here's a brief overview:
libUTL++ is licensed under the GNU GPL. Make sure you read and understand the license, because it describes your rights in regards to the use and redistribution of this software.
Code written on top of libUTL++ is easily portable to any platform that libUTL++ itself has been ported to. Currently Linux and Windows/MinGW (32- and 64-bit) are supported, as these are the platforms I've targeted in my projects.
You will need to have the following installed:
The MinGW-w64 project has made it easy to cross-compile for Windows on the Linux platform. The included build configuration for MinGW-w64 assumes the cross-targeted binutils & gcc compiler are installed in
/opt/mingw-w64/. You also will need the gendef program (installed in
/opt/mingw-w64/bin/). You can download gendef as well as pre-built Mingw-w64 here. On my Debian system I also had to install
libmpfr-dev, and create a symlink:
/usr/lib/libmpfr.so.1 -> /usr/lib/x86_64-linux-gnu/libmpfr.so.
First, unpack the sources and change into the libUTL++ source root:
Next, if you're building on a system other than Linux (such as MinGW), you have to configure the build system for that target by using the config shell script located in the
Then build and install libUTL++, like this:
You can use INST_ROOT to override the installation root. For example:
The build process may take a few minutes. Several versions of the library will be built, including:
DEBUG: libutl_g.a, libutl_g.so.1
-g, enabled runtime assertions and debug new/delete]
DEBUG_RELEASE: libutl_gr.a, libutl_gr.so.1
-g, disabled runtime assertions and debug new/delete]
RELEASE: libutl.a, libutl.so.1
-Ofast, disabled runtime assertions and debug new/delete]
To use libUTL++ in your project:
<libutl/libutl.h>near the start of your source files
#include'ingany other header files from libUTL++)
To learn the library, the best way to get started is to study the bundled applications and example programs (installed in
$INST_ROOT/share/libutl/), as well as the documentation (installed in
libUTL++ can (in general) happily coexist with other libraries:
You should be able to use many other libraries without any conflict.
One thing to watch for is that in a DEBUG build, libUTL++ overloads the new operator to remember the source file and line # of allocations, and this can be a problem when including some C++ header files. You can solve it this way:
You can reach me via e-mail: adam at mckeecs dot com.
Please contact me with bug reports or any ideas for improvements.