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
CMake pros
----------
- Makes it possible and relatively easy to download, configure, build, install, and link external modules
- Cross-platform system- and library-discovery
- CTest uses a Makefile (possible to run tests with -jN)
Motivation to create a CMake framework library
----------------------------------------------
- Simplify CMake code transfer (scientific projects typically have very similar requirements)
- FC, CC, CXX
- Compiler flags - Compiler flags
- Front-end script (setup.py) - Front-end script (setup.py)
- MPI, OMP, CUDA - Support for parallelization: MPI, OMP, CUDA
- Math libraries - Math libraries (BLAS, LAPACK)
- 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 Our other motivation for Autocmake was to make it easier for developers who do
- Philosophy 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 - Explicit is better than implicit
- Convention over configuration - Convention over configuration
- Well documented set of plug-ins