update about doc

This commit is contained in:
Radovan Bast 2015-06-22 15:24:26 +02:00
parent 9eefdbd9f3
commit a2eda46896

View File

@ -4,49 +4,54 @@ 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::
Makefiles. Autocmake is for people who are tired of editing CMake files
directly. 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::
update.py --self
|
| fetches Autocmake infrastructure
v
autocmake.cfg
|
| update.py
v
| |
| fetches Autocmake |
| infrastructure |
v Developer maintaining
autocmake.cfg Autocmake
| |
| update.py |
| |
v v
CMakeLists.txt (and setup.py front-end)
|
| setup.py (which invokes CMake)
v
Makefile (or something else)
|
| make
v
| |
| setup.py |
| which invokes CMake |
v User of the code
Makefile (or something else) |
| |
| make |
| |
v 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 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:
The main motivation for us to create Autocmake as a CMake framework library and
CMake module composer was to simplify CMake code transfer between codes. We got
tired of manually diffing 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)
- Tuning of compiler flags
- Front-end script for the CMake-unaware user (setup.py)
- Support for parallelization: MPI, OMP, CUDA
- Math libraries (BLAS, LAPACK)
- 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.
not know CMake to generate a CMake infrastructure within minutes by providing
a higher-level entry point.
Autocmake is a chance to provide well documented and tested set of CMake
Autocmake is a chance to provide a well documented and tested set of CMake
plug-ins. With this we wish to give also users of codes the opportunity to
introduce the occasional tweak without the need to read CMake documentation.
@ -61,6 +66,5 @@ possible and to minimize "hidden" actions in the background.
Convention over configuration
-----------------------------
Our guideline is to follow good established conventions
to allow users and developers to recognize the configuration
when moving to a new project.
Our guideline is to follow good established conventions in order to allow users
and developers to recognize the configuration when moving to a new project.