autocmake/doc/about.rst
2015-06-02 21:49:40 +02:00

54 lines
1.6 KiB
ReStructuredText

About Autocmake
===============
You typically want to use CMake when you get tired of manually editing
Makefiles. Autocmake is for people who are tired of editing CMake files.
Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as well as
``setup.py``, which serves as a front-end to ``CMakeLists.txt``. All this is
done based on a lightweight ``autocmake.cfg`` file::
autocmake.cfg
|
| Autocmake
v
CMakeLists.txt (and setup.py front-end)
|
| setup.py (which invokes CMake)
v
Makefile (or something else)
|
| make
v
Build/install/test targets
Why Autocmake
-------------
The main motivation for us to create Autocmake as a CMake framework library was
to simplify CMake code transfer between codes. We got tired of manually diffing
and and copy-pasting boiler-plate CMake code and watching it diverge while
maintaining the CMake infrastructure in a growing number of scientific projects
which typically have very similar requirements:
- Fortran and/or C and/or C++ support
- Compiler flags
- Front-end script (setup.py)
- Support for parallelization: MPI, OMP, CUDA
- Math libraries (BLAS, LAPACK)
Our other motivation for Autocmake was to make it easier for developers who do
not know CMake to generate a CMake infrastructure within minutes.
Autocmake is a chance to provide well documented and tested set of CMake
plug-ins. With this we want to give also users of codes which use Autocmake the
opportunity to introduce the occasional tweak without the need to read lengthy
manuals.
We try to follow two design principles:
- Explicit is better than implicit
- Convention over configuration