update about section

This commit is contained in:
Radovan Bast 2015-06-02 21:46:35 +02:00
parent 82e23705fb
commit 02b848be77

View File

@ -3,10 +3,11 @@
About Autocmake About Autocmake
=============== ===============
CMake typically generates Makefiles based on CMakeLists.txt files. Autocmake You typically want to use CMake when you are tired of manually editing
assembles CMake modules, generates ``CMakeLists.txt`` as well as ``setup.py``, Makefiles. Autocmake is for people who are tired of editing CMake files.
which serves as a front-end to ``CMakeLists.txt``. All this is done based on a Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as well as
lightweight ``autocmake.cfg`` file:: ``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.cfg
| |
@ -23,35 +24,28 @@ lightweight ``autocmake.cfg`` file::
Build/install/test targets Build/install/test targets
CMake cons Why Autocmake
---------- -------------
- More complexity (not because CMake is complex but because of another layer) The main motivation for us to create Autocmake as a CMake framework library was
- Yet another thing to learn: requires learning and training to simplify CMake code transfer between codes. We got tired of manually diffing
- Typically many files instead of one file and and copy-pasting boiler-plate CMake code and watching it diverge while
- Documentation ("Which file do I need to edit to achieve X?") maintaining the CMake infrastructure in many 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.
CMake pros 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.
- Makes it possible and relatively easy to download, configure, build, install, and link external modules We try to follow two design principles:
- Cross-platform system- and library-discovery - Explicit is better than implicit
- CTest uses a Makefile (possible to run tests with -jN) - Convention over configuration
Motivation to create a CMake framework library
----------------------------------------------
- Simplify CMake code transfer (scientific projects typically have very similar requirements)
- FC, CC, CXX
- Compiler flags
- Front-end script (setup.py)
- MPI, OMP, CUDA
- Math libraries
- Make it easy for people who know CMake well to create well defined configurations
- Make it easy for people who do not know CMake to generate a CMake infrastructure within minutes
- Philosophy
- Explicit is better than implicit
- Convention over configuration
- Well documented set of plug-ins