update about section
This commit is contained in:
parent
82e23705fb
commit
02b848be77
@ -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
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user