Synchronized projects consist of files that are mirrored on the local system as well as on one or more remote systems. Editing occurs locally and each file is synchronized with the currently active remote system when it is changed, created, or deleted. This enables faster interaction with the files and editor, more CDT editor features since the files are local, and continued interaction for editing etc. if the network connection is lost.
To host a synchronized project, the remote system must support the Git distributed version control system.
To create a new Synchronized Project, use the following steps:
Or, from the context menu (right-mouse) in the Project Explorer, select New > Synchronized Project
Select Next > and then Next > again.
Edit the files as you would any local project. Each time you save a file, it will be synchronized with the remote system. If you create or delete files, the remote system will be updated appropriately.
By default, a synchronized project is configured to build on the same remote host used for synchronization. To build the project (assuming you have already created a makefile), make sure the project is selected in the Project Explorer view, then click on the build icon (the icon that looks like a hammer). A build configuration called "Workspace" is also available to build on the local machine if this is required.
You can create configurations to synchronize and build on other remote systems using the C/C++ Build > Synchronize project properties. To bring up the Synchronize project properties, in the Project Explorer view, select the project and choose Properties from the context menu (right click).
Synchronization is done between the local workspace and the active configuration. You can change the active configuration by using the Build Configurations > Set Active... context menu on the project or via the Manage Configurations button on the Synchronize properties page. If "Workspace" is the active configuration, no synchronization is done.
The sync context menu lets you alter the sync behavior and can be accessed with a right click on a sync project. From this menu, you can turn off automatic sync'ing (sync after saving files and other resource changes) so that syncs only occur on request. This setting is applied to all projects in the workspace. The "Project Auto-Sync Settings" submenu allows you to alter the behavior of automatic sync'ing per project. The next two selections allow you to force an immediate sync of the current project. A "sync all" syncs all configurations of a project. Note that this can be quite slow if your project has several configurations. Prior to a build, files are always updated with a forced sync of only the active configuration, regardless of any settings. This ensures that the build is based on the latest revisions. Another sync may occur after the build to update files, since the build may alter the remote files during compilation. (This sync, however, does respect the user's settings.) See "Changing which files are synchronized" for information on the "Filter..." option.
From the "Filter..." option of the sync context menu, you can change which files are synchronized for the current project. You can also change the default settings for future projects on the "Synchronized Project" preference page. For files and folders, "Exclude Selection" and "Include Selection" shortcut options are also available from the context menu.
By default, files and directories specifically used by Eclipse are excluded. (Note that these files, such as .project
etc. are normally not visible.)
The "File View" always indicates the currently excluded and included directories and files, while the "Pattern View" always shows the current exclude and include patterns. (The file view is not shown on the preference page.) Each view updates automatically if the other view is changed, so that they are always in agreement. This allows you to see immediately the effect of adding a new pattern. By default, remote files are not shown. Showing remote files may lead to a slower response time while updating views. An error message is printed if the remote is disconnected.
You can deselect or select directories or files in the File View, which will add the corresponding exclude or include pattern to the pattern view. These are "path" patterns, meaning that directories or files in the specified path are excluded or included. Underneath the Pattern View, you can manually enter a path (Enter Path:). You can also enter a regular expression ("regex") that is compared to the project-relative path. The regular expression syntax is that of the Java programming language. An error message is printed if the regular expression is not valid. Finally, you can select "special" patterns from the "Select pattern" drop-down. Currently the only special pattern is one for matching binary files.
Patterns are applied in the order given in the Pattern View, and new patterns are always placed at the top (highest priority). So a file will be excluded or included based on the first matching pattern, or included if no pattern matches. Use the "Up" and "Down" buttons to change a pattern's priority. If a new pattern is identical to an old pattern and has the same type, the old pattern is removed. Note that it doesn't matter whether the old pattern was an exclude or include pattern, since the new pattern supersedes it.
The conversion wizard allows you to convert current C/C++ or Fortran projects to synchronized projects. Currently only local projects can be converted. To convert a project right-click in the workspace and select New > Other... In the wizard selection dialog, select Remote > Convert C/C++ or Fortran Project to a Synchronized Project > Next. From this dialog, you can select a project to convert and configure a remote site. See Creating a new Synchronized Project for details on configuring a remote site. This wizard will add a single new remote build configuration. Its settings are copied from the current active configuration. You can change these settings and add new configurations as with any other synchronization project. See Working with a Synchronized Project for details.
![]() |
![]() |
At the time of the PTP 5.0 release (June 2011), the mechanism for supporting remote includes in CDT does not work automatically with synchronized projects yet, as it requires some integration with the remote scanner discovery (which discovers what includes/defines are set on the remote system).
You can currently manually configure remote include files as follows:
//connection_name/usr/include
where 'connnection_name' is the name of the connection you specified
for the Remote Tools service provider
/usr/include
using the connection lincoln.ncsa.uiuc.edu
that you
previously configured, you would use the path //lincoln.ncsa.uiuc.edu/usr/include
See also Synchronized Projects usage info on the PTP Wiki page for information available after PTP 5.0 release.
See Local Vs. Remote Projects for more information on the different kinds of local and remote projects.