symbols in gromacs/restraint/restraintpotential.h not available to external client code
The version of
restraintpotential.h installed with GROMACS 2019 beta 1 declares some symbols that are defined only in
libgromacs, though the model for externally-compiled MD plugin code has been to link only against
The simplest solution is to fully define the member functions in
restraintpotential.h. See Change-Id: I530c8b74d490645de25c722036be5387a4fc0a61
An alternative solution would be to require client code to link both
libgromacs for GROMACS 2019, but that is both an unnecessary headache for users and instead requires changes to the way the
libgromacs target is built and exported.
This bug demonstrates that it will be useful to allow future test binaries to be compiled as external client code would be, without access to the symbols currently exposed in
libgromacs that aren't expressly part of the public API, but that is beyond the scope of this issue. (Also relates to #701)
Note that, with resolution to issue #2630, we expect to build sample client code on Jenkins build hosts against GROMACS installations (out of build tree), so that will help.
This issue also defers discussion on merging libgmxapi and libgromacs.
Fully define symbols in restraintpotential.h
External client code (i.e. an MD plugin) is expected to link against
libgmxapi, but not against libgromacs directly. This change allows
client code to implement gmx::IRestraintPotential using only GROMACS
installed headers, without relying on libgromacs to define methods in
gmx::PotentialPointData or gmx::IRestraintPotential.