Previous: Connection settings, Up: Setup the remote servers

#### 15.2.3 Paths settings

The last configuration part defines the path translations between your local host and the remote server.

The remote paths definition will allow GPS to translate your locally loaded project (the project that resides in your local filesystem) to paths used on the remote server. This part also tells GPS how to keep those paths synchronized between the local machine and the remote server.

All your project's dependencies must then reside in a path that is defined here. Note that you can retrieve those paths by using `gnat list -v -Pyour_project`. In particular, the path to the GNAT run-time (`adainclude` directory) needs to be mapped so that code completion and source navigation work properly on run-time entities.

To add a new path, click on the `+` button, and enter the corresponding local and remote paths.

You can easily select the desired paths by clicking on the icon next to the path's entry. Remote browsing is allowed only when the connection configuration is set (See Connection settings.) Clicking on `Apply` will apply your connection configuration and allow you to browse the remote host to select the remote paths.

Five kinds of path synchronization can be set for each defined path:

- `Never`: no synchronization is required from GPS, the paths are shared using an OS mechanism like NFS.
- `Manually`: synchronization is needed, but will only be performed manually using the remote view buttons.
- `Always`: Relevant to source and object paths of your project. They are kept synchronised by GPS before and after every remote action (such as performing a build or run).
- `Once to local`/`Once to remote`: Relevant to project's dependencies. They are synchronized once when a remote project is loaded or when a local project is set remote. They can still be manually synchronized using the Remote View (See The remote view.)

The way those paths need to be configured depends on your network architecture.

- If your project is on a filesystem that is shared between your host and the remote host (using NFS of SMB filestems, for example), then only the roots of those filesystems need to be specified, using each server's native paths (on Windows, the paths will be expressed using X:\my\mounted\directory\ while on unix, the paths will be expressed using /mnt/path/).
- If the project's files are synchronized using rsync, defining a too generic path translation will lead to very slow synchronization. In that case you should define the paths as specifically as possible, in order to speed up the synchronization process.