Made version and commit variables static, and local to the version display function. Previously, they would be globals, and as such would collide with those from linked shared libraries. Now, all project types will have them local.
mkproj
Generic project templates for tools, filters, libraries in C++.
Installation
Type make
to install the mkproj
script, its man page, and the templates.
The default location is to put everything inside your ~/.local
hierarchy, but
you can change that by defining an environment variable PREFIX
, giving it your
desired root directory as a value, before typing make
.
The actual location used will be recorded in a config file:
~/.config/mkprojrc
, which will be read by the mkproj
script. It needs to
know where your templates are in order to function.
Overview
With mkproj
, you can create a C++ project for a tool or a library.
The project can be:
- a simple tool, to test some idea;
- a more elaborate tool, meant to be distributed;
- a UNIX filter, which processes input files line by line, or reads from standard input when there are no input files;
- a library, where both a static and a dynamic library will be built.
Apart from the simple tool, all of these can optionally:
- use a precompiled header for the C++ Standard Library;
- implement a plugin architecture, where building and installing plugins is automatically supported.
At the center is a Makefile
, which should not be altered. This Makefile
can
build and install any of these projects. All project-specific additions should
be put in the mandatory premake.make
(which is included at the start of the
Makefile), and in an optional postmake.make
(which is included at the end of
the Makefile).
The premake.make
typically defines some Make variables, whereas the
postmake.make
typically contains extra Make targets.
The premake.make
is mandatory, because it defines the name of the tool or
library, and its version. This is also where you declare external
dependencies.
Available Make targets for your project are:
make
will build the tool or library;make test
will build and run tests, using the Boost Unit Test Framework;sudo make install
will install it, and all of its accompanying files;make clean
will remove compiled object files, but will keep a previously built tool or library, and the precompiled header;make dist-clean
will bring the project to a pristine state.sudo make uninstall
will remove all installed files.
Documentation
man mkproj