Update traditional make info and synchronize information provided with CMake version
This commit is contained in:
@ -86,12 +86,20 @@ options and settings will be printed at the end. The ``cmake --build
|
||||
ultimately produce a library ``liblammps.a`` and the LAMMPS executable
|
||||
``lmp`` inside the ``build`` folder.
|
||||
|
||||
If your machine has multiple CPU cores (most do these days), you can
|
||||
speed this up by compiling sources in parallel with ``make -j N`` (with
|
||||
N being the maximum number of concurrently executed tasks). Also
|
||||
installation of the `ccache <https://ccache.dev/>`_ (= Compiler Cache)
|
||||
software may speed up repeated compilation significantly, e.g. during code
|
||||
development.
|
||||
Compilation can take a long time, since LAMMPS is a large project with
|
||||
many features. If your machine has multiple CPU cores (most do these
|
||||
days), you can speed this up by compiling sources in parallel with
|
||||
``make -j N`` (with N being the maximum number of concurrently executed
|
||||
tasks). Also installation of the `ccache <https://ccache.dev/>`_ (=
|
||||
Compiler Cache) software may speed up repeated compilation even more,
|
||||
e.g. during code development.
|
||||
|
||||
After the initial build, whenever you edit LAMMPS source files, add
|
||||
or remove packages, change compiler flags or build options,
|
||||
you must re-compile and relink the LAMMPS executable with ``cmake --build .``.
|
||||
If the compilation fails for some reason, try running ``cmake .`` and
|
||||
then compile again. The included dependency tracking of should insure
|
||||
that only the necessary subset of files are re-compiled.
|
||||
|
||||
After compilation, you may optionally install the LAMMPS executable into
|
||||
your system with:
|
||||
|
||||
@ -2,10 +2,14 @@ Build LAMMPS with make
|
||||
======================
|
||||
|
||||
Building LAMMPS with traditional makefiles requires that you have a
|
||||
Makefile."machine" file appropriate for your system in the src/MAKE,
|
||||
src/MAKE/MACHINES, src/MAKE/OPTIONS, or src/MAKE/MINE directory (see
|
||||
below). It can include various options for customizing your LAMMPS
|
||||
build with a number of global compilation options and features.
|
||||
``Makefile.<machine>`` file appropriate for your system in either the
|
||||
``src/MAKE``, ``src/MAKE/MACHINES``, ``src/MAKE/OPTIONS``, or
|
||||
``src/MAKE/MINE`` directory (see below). It can include various options
|
||||
for customizing your LAMMPS build with a number of global compilation
|
||||
options and features.
|
||||
|
||||
Requirements
|
||||
^^^^^^^^^^^^
|
||||
|
||||
Those makefiles are written for and tested with GNU make and may not
|
||||
be compatible with other make programs. In most cases, if the "make"
|
||||
@ -16,44 +20,52 @@ with :doc:`CMake <Build_cmake>`. The makefiles of the traditional
|
||||
make based build process and the scripts they are calling expect a few
|
||||
additional tools to be available and functioning.
|
||||
|
||||
* a Bourne shell compatible "Unix" shell program (often this is bash)
|
||||
* a few shell utilities: ls, mv, ln, rm, grep, sed, tr, cat, touch, diff, dirname
|
||||
* python (optional, required for "make lib-XXX" in the src folder)
|
||||
* a working C/C++ compiler toolchain; on Linux these are often the GNU compilers
|
||||
* a Bourne shell compatible "Unix" shell program (often this is ``bash``)
|
||||
* a few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname``
|
||||
* python (optional, required for ``make lib-<pkg>`` in the src folder).
|
||||
python scripts are currently tested with python 2.7 and 3.6. The procedure
|
||||
for :doc:`building the documentation <Manual_build>` requires python 3.
|
||||
|
||||
To include LAMMPS packages (i.e. optional commands and styles) you
|
||||
must enable them first, as discussed on the :doc:`Build package
|
||||
<Build_package>` doc page. If a packages requires (provided or
|
||||
Getting started
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
To include LAMMPS packages (i.e. optional commands and styles) you must
|
||||
enable (or "install") them first, as discussed on the :doc:`Build
|
||||
package <Build_package>` doc page. If a packages requires (provided or
|
||||
external) libraries, you must configure and build those libraries
|
||||
**before** building LAMMPS itself and especially **before** enabling
|
||||
such a package with "make yes-<package>". Building :doc:`LAMMPS
|
||||
with CMake <Build_cmake>` can automate much of this for many types of
|
||||
such a package with ``make yes-<package>``. Building :doc:`LAMMPS with
|
||||
CMake <Build_cmake>` can automate much of this for many types of
|
||||
machines, especially workstations, desktops, and laptops, so we suggest
|
||||
you try it first when building LAMMPS in those cases.
|
||||
|
||||
The commands below perform a default LAMMPS build, producing the LAMMPS
|
||||
executable lmp_serial and lmp_mpi in lammps/src:
|
||||
executable ``lmp_serial`` and ``lmp_mpi`` in ``lammps/src``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cd lammps/src
|
||||
make serial # build a serial LAMMPS executable
|
||||
cd lammps/src # change to main LAMMPS source folder
|
||||
make serial # build a serial LAMMPS executable using GNU g++
|
||||
make mpi # build a parallel LAMMPS executable with MPI
|
||||
make # see a variety of make options
|
||||
|
||||
This initial compilation can take a long time, since LAMMPS is a large
|
||||
project with many features. If your machine has multiple CPU cores
|
||||
(most do these days), using a command like "make -jN mpi" (with N =
|
||||
the number of available CPU cores) can be much faster. If you plan to
|
||||
do development on LAMMPS or need to re-compile LAMMPS repeatedly, the
|
||||
installation of the ccache (= Compiler Cache) software may speed up
|
||||
compilation even more.
|
||||
Compilation can take a long time, since LAMMPS is a large project with
|
||||
many features. If your machine has multiple CPU cores (most do these
|
||||
days), you can speed this up by compiling sources in parallel with
|
||||
``make -j N`` (with N being the maximum number of concurrently executed
|
||||
tasks). Also installation of the `ccache <https://ccache.dev/>`_ (=
|
||||
Compiler Cache) software may speed up repeated compilation even more,
|
||||
e.g. during code development.
|
||||
|
||||
After the initial build, whenever you edit LAMMPS source files, or add
|
||||
or remove new files to the source directory (e.g. by installing or
|
||||
uninstalling packages), you must re-compile and relink the LAMMPS
|
||||
executable with the same "make" command. This makefiles dependencies
|
||||
should insure that only the subset of files that need to be are
|
||||
re-compiled.
|
||||
executable with the same ``make <machine>`` command. The makefile's
|
||||
dependency tracking should insure that only the necessary subset of
|
||||
files are re-compiled. If you change settings in the makefile, you have
|
||||
to recompile *everything*. To delete all objects you can use ``make
|
||||
clean-<machine>``.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -65,13 +77,15 @@ re-compiled.
|
||||
correctly detect which parts need to be recompiled after changes
|
||||
were made to the sources.
|
||||
|
||||
----------
|
||||
Customized builds and alternate makefiles
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The lammps/src/MAKE tree contains the Makefile.machine files included
|
||||
in the LAMMPS distribution. Typing "make machine" uses
|
||||
*Makefile.machine*\ . Thus the "make serial" or "make mpi" lines above
|
||||
use Makefile.serial and Makefile.mpi, respectively. Other makefiles
|
||||
are in these directories:
|
||||
The ``src/MAKE`` directory tree contains the ``Makefile.<machine>``
|
||||
files included in the LAMMPS distribution. Typing ``make example`` uses
|
||||
``Makefile.example`` from one of those folders, if available. Thus the
|
||||
``make serial`` and ``make mpi`` lines above use
|
||||
``src/MAKE/Makefile.serial`` and ``src/MAKE/Makefile.mpi``,
|
||||
respectively. Other makefiles are in these directories:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
@ -79,11 +93,16 @@ are in these directories:
|
||||
MACHINES # Makefiles for specific machines
|
||||
MINE # customized Makefiles you create (you may need to create this folder)
|
||||
|
||||
Typing "make" lists all the available Makefile.machine files. A file
|
||||
with the same name can appear in multiple folders (not a good idea).
|
||||
The order the directories are searched is as follows: src/MAKE/MINE,
|
||||
src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES. This gives preference
|
||||
to a customized file you put in src/MAKE/MINE.
|
||||
Simply typing ``make`` lists all the available ``Makefile.<machine>``
|
||||
files with a single line description toward the end of the output. A
|
||||
file with the same name can appear in multiple folders (not a good
|
||||
idea). The order the directories are searched is as follows:
|
||||
``src/MAKE/MINE``, ``src/MAKE``, ``src/MAKE/OPTIONS``,
|
||||
``src/MAKE/MACHINES``. This gives preference to a customized file you
|
||||
put in ``src/MAKE/MINE``. If you create your own custom makefile under
|
||||
a new name, please edit the first line with the description and machine
|
||||
name, so you will not confuse yourself, when looking at the machine
|
||||
summary.
|
||||
|
||||
Makefiles you may wish to try include these (some require a package
|
||||
first be installed). Many of these include specific compiler flags
|
||||
|
||||
Reference in New Issue
Block a user