If you installed preCICE in a custom prefix, then one still needs to make it discoverable by the system.
The preCICE library needs to be discoverable in various ways:
- The location of headers needs to be available during compilation.
Compilers use hints from
CPATH
if no extra compilation flags were passed to them using-I
. - The shared library needs to be available during linking and execution.
The dynamic linker uses hints from
LD_LIBRARY_PATH
(DYLD_LIBRARY_PATH
on MacOS X). - The preCICE executables need to be in
PATH
(optional, only for additional tools).
As this setup can become tedious to maintain, there are some tools that expose the above details. However, they also need to find preCICE in some way:
pkg-config
andpkgconf
usePKG_CONFIG_PATH
to search for additional.pc
files.CMake
usesCMAKE_PREFIX_PATH
for additional installation prefixes. Alternatively, one can specify the location of the preCICE CMake configuration file usingprecice_DIR
.
Using the shell
If you are using a Unix-like system, you are using a shell, which offers an easy and straight forward way to make preCICE discoverable.
Let PRECICE_PREFIX
be the installation prefix chosen during the preparation step.
Then add the following to your .profile
(for bash) or .zshrc
(for zsh).
# set this to your selected installation prefix
PRECICE_PREFIX=~/software/prefix
export PATH=$PRECICE_PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$PRECICE_PREFIX/lib:$LD_LIBRARY_PATH
export CPATH=$PRECICE_PREFIX/include:$CPATH
# Enable detection with pkg-config and CMake
export PKG_CONFIG_PATH=$PRECICE_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH
export CMAKE_PREFIX_PATH=$PRECICE_PREFIX:$CMAKE_PREFIX_PATH
After adding these variables, start a new session (open a new terminal or logout and login again).
Using systemd environment.d
An alternative to the above system is to set these variables in the shell-agnostic environment.d
.
Create the directory if it does not yet exist:
mkdir -p ~/.config/environment.d/
Let PRECICE_PREFIX
be the installation prefix chosen during the preparation step.
Then create a file ~/.config/environment.d/99-precice.conf
with the content:
# set this to your selected installation prefix
PRECICE_PREFIX=$HOME/software/prefix
PATH=${PRECICE_PREFIX}/bin:${PATH}
LD_LIBRARY_PATH=${PRECICE_PREFIX}/lib:${LD_LIBRARY_PATH}
CPATH=${PRECICE_PREFIX}/include:${CPATH}
# Enable detection with pkg-config and CMake
PKG_CONFIG_PATH=${PRECICE_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}
CMAKE_PREFIX_PATH=${PRECICE_PREFIX}:${CMAKE_PREFIX_PATH}
After adding the file, logout and login again. Opening a new terminal will not be sufficient.
Using directly from the binary directory
It may not always be practical to install preCICE repeatedly. This is especially the case for simultaneous development of preCICE and an adapter, or while profiling the internals.
This method is discouraged as file layouts are fundamentally different and we make no guarantees on keeping them consistent between releases.
Hence, the only reliable methods for using preCICE from the binary directory require pkg-config
or CMake
.
If your adapter or solver isn’t using one of these methods, then we strongly suggest to install preCICE to a prefix or port the adapter to pkg-config
.
First extend LD_LIBRARY_PATH
with the binary directory if you don’t plan to use rpath
(which CMake
does by default).
For pkg-config
users, extend PKG_CONFIG_PATH
with the binary directory.
For CMake
users, either set the environment variable precice_DIR
to the binary directory prior to calling CMake
, or pass it as a CMake
variable during configuration.
Next steps
This concludes the preCICE installation for custom prefixes and you should have a working installation of preCICE on your system.
To use preCICE in your project, see the page Linking to preCICE.