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 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. Makefiles. Autocmake is for people who are tired of editing CMake files
Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as well as directly. Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as
``setup.py``, which serves as a front-end to ``CMakeLists.txt``. All this is well as ``setup.py``, which serves as a front-end to ``CMakeLists.txt``. All
done based on a lightweight ``autocmake.cfg`` file:: this is done based on a lightweight ``autocmake.cfg`` file::
update.py --self update.py --self
| | |
| fetches Autocmake infrastructure | fetches Autocmake |
v | infrastructure |
autocmake.cfg v Developer maintaining
| autocmake.cfg Autocmake
| update.py | |
v | update.py |
| |
v v
CMakeLists.txt (and setup.py front-end) CMakeLists.txt (and setup.py front-end)
| | |
| setup.py (which invokes CMake) | setup.py |
v | which invokes CMake |
Makefile (or something else) v User of the code
| Makefile (or something else) |
| make | |
v | make |
| |
v v
Build/install/test targets Build/install/test targets
Why Autocmake Why Autocmake
------------- -------------
The main motivation for us to create Autocmake as a CMake framework library was The main motivation for us to create Autocmake as a CMake framework library and
to simplify CMake code transfer between codes. We got tired of manually diffing CMake module composer was to simplify CMake code transfer between codes. We got
and copy-pasting boiler-plate CMake code and watching it diverge while tired of manually diffing and copy-pasting boiler-plate CMake code and watching
maintaining the CMake infrastructure in a growing number of scientific projects it diverge while maintaining the CMake infrastructure in a growing number of
which typically have very similar requirements: scientific projects which typically have very similar requirements:
- Fortran and/or C and/or C++ support - Fortran and/or C and/or C++ support
- Compiler flags - Tuning of compiler flags
- Front-end script (setup.py) - Front-end script for the CMake-unaware user (setup.py)
- Support for parallelization: MPI, OMP, CUDA - 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 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 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. 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 Convention over configuration
----------------------------- -----------------------------
Our guideline is to follow good established conventions Our guideline is to follow good established conventions in order to allow users
to allow users and developers to recognize the configuration and developers to recognize the configuration when moving to a new project.
when moving to a new project.