Simplicity Studio provides software development kits (SDKs) that are continuously updated to help you get code up and running quickly on Silicon Labs microcontrollers. To keep your application code in sync with these updates, Simplicity Studio allows SDK resources to "link" into the project.
Linking, in this case, does not refer to the usual build process of combining compiled object code modules into a single binary image, but rather Simplicity Studio's referencing of its centrally installed SDK components during the build process.
Instead of needing a local copy of SDK components for a given project folder structure or having to manually add include directories to the build configuration (which is, of course, still allowed), Simplicity Studio incorporates commonly-used SDK components when you follow the Project > New > Silicon Labs MCU Project… menu and dialogs to create a new project.
To know whether or not your project is using linked resources, simply look at the icons adjacent to each source file in the project explorer. For example, these EFM32 emlib components…
…are linked, as denoted by the arrow in the lower right corner of their icons. On the other hand, these project sources…
…do not have icons with arrows, so they are locally stored within the project folder structure and are, therefore, not linked.
Knowing this, how can you share a project with another user or Silicon Labs technical support? If you look around the different menus in Simplicity Studio, you will find an Export… command under the File menu. This would seem to be proper way to get a copy of your project organized in such a way so that it can be shared with other people.
Unfortunately, what the Export… command generates is an XML file with references to the various components used and not some kind of packaged project that can simply be shared through e-mail, the cloud, or even on a USB flash drive.
Fear not, however, because it is actually a very simply matter to generate a shareable project file on your own! First, locate your project in the Simplicity Studio workspace folder, e.g. C:\Users\your_user_name\SimplicityStudio\v3_workspace if you are using Windows. Each project in the workspace has its own folder. Copy the folder for the project you wish to share somewhere convenient, such as your desktop.
Next, open your local copy of the project folder and delete any folders where build artifacts are stored. These can take up a fair bit of space, and you are probably going to want whoever is getting your code to rebuild the project anyway. For example, the EFM32 project shown below has both Debug and Release directories corresponding to the different build configurations that were used. Both of these can be deleted.
With build artifacts removed, your project is ready to package up for sharing. Simply compress the project folder into a .ZIP file as you would any other folder. The important thing to remember when creating the .ZIP file, especially if you do so at the command line, is to use the recursive option (and, if necessary, an appropriate wildcard for pattern matching) so that the top-level project folder, all subfolders, and all files are incorporated into the archive. Notice in the archive listing below how the top-level folder and all subfolders, even the empty ones, are included:
Your project is now ready to share! The user receiving your project can get it into Simplicity Studio by following these steps:
The person with whom you've shared your project will have a local copy that can be built against whatever version of Simplicity Studio he/she has installed so long as support for the particular product family and part (e.g. EFM32 and Leopard Gecko in the example above) are also installed. Whatever linked SDK resources you have incorporated into the project will also be linked into the shared project. Any project options you may have customized, such as the compiler optimization level or the options passed to the individual build steps (for example, see the Knowledge Base article Generating a Listing File in Simplicity Studio for EFM32 Devices), will be preserved, which is particularly helpful if you need to share your project with Silicon Labs technical support.