add README file to SWIG tool

This commit is contained in:
Axel Kohlmeyer
2020-10-19 01:01:06 -04:00
parent 5a70ee8a40
commit 8c5ac3d49c

50
tools/swig/README Normal file
View File

@ -0,0 +1,50 @@
SWIG generated script library wrappers
The "swig" tool and library ( http://swig.org )
offers an automated way to incorporate compiled code
modules into scripting languages. It processes the
function prototypes in C and generates wrappers for
a variety of scripting languages from it.
We provide here an "interface file", "lammps.i" file
that has the content of the "library.h" adapted so SWIG
can process it. Please note that not all kinds of C
interfaces can be automatically translated, so you
would have to add custom functions. In the case of
python, a ctypes based lammps module already exists,
that is object oriented while SWIG will generate a 1:1
translation of the functions in the interface file.
When using CMake, the build steps for building a wrapper
module are integrated for the languages: java, lua,
perl5, python, ruby, and tcl. These require that the
LAMMPS library is build as a shared library and all
necessary development headers and libraries are present.
Manual building allows a little more flexibility. E.g.
with Tcl one can build and use a dynamically loaded object with:
$ swig -tcl -module tcllammps lammps.i
$ gcc -fPIC -shared $(pkgconfig --cflags tcl) -o tcllammps.so lammps_wrap.c -L ../src/ -llammps
$ tclsh
% load ./tcllammps.so
% set lmp [lammps_open_no_mpi 0 NULL NULL]
% puts "LAMMPS version: [lammps_version $lmp]
% lammps_close $lmp
Equivalently with Python the manual steps are:
$ swig -python -module pylammps lammps.i
$ gcc -fPIC -shared $(pkgconfig --cflags python) -o _pylammps.so lammps_wrap.c -L ../src/ -llammps
$ python
% from pylammps import *
You may need to set or extend the LD_LIBRARY_PATH environment
variable to include the folder where the LAMMPS shared library
file is located, if it is not found automatically.
For details on how to build the wrappers for other
individual http://swig.org/doc.html