# proj_tpl Generic project templates for tools, filters, libraries in C++. > [!Note] > Alpha status, INCOMPLETE. Currently work is underway for the Makefile and script. ## Installation Type `make` to install the `mkproj` script, its man page, and the templates. ## 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 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 mkproj`