From 93f11efcc1696216b3dc516901e749d1551d10b4 Mon Sep 17 00:00:00 2001 From: Bob Polis Date: Mon, 23 Dec 2024 15:55:44 +0100 Subject: [PATCH] Add content to README.md --- README.md | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c2389e..8322830 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,49 @@ # proj_tpl -Generic project templates for tools, filters, libraries in C++. \ No newline at end of file +Generic project templates for tools, filters, libraries in C++. + +## Installation + +Type `make` to install the `mkcppproj` tool and its man page. + +## Overview + +With `mkcppproj`, you can create a C++ project for a tool or a library. +The tool can be: + +- a simple experiment, 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. + +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 are: + +- `make` will build the tool or library; +- `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 mkcppproj`