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