add README file to SWIG tool
This commit is contained in:
50
tools/swig/README
Normal file
50
tools/swig/README
Normal 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
|
||||||
Reference in New Issue
Block a user