Project Overview¶
The SLC project description file (.slcp) describes a single software application, which can be used to generate an IDE project. The IDE project is then used to build the application.
Project description files can be located anywhere on disk, either inside or outside an SDK. The location of the .slcp file marks the root directory of the project, and all project-relative paths are resolved from this starting point.
Project Generation¶
Project generation is the process of generating an IDE project from an SLC project. By default, project generation does not modify the .slcp file -- it is treated as read-only input that produces an IDE project.
New Project Transformation¶
New project transformation is a special mode of project generation where a reference project is used to create a new project. This mode is used to create user projects from sample application projects. In this mode, the .slcp file is rewritten to remove conditional content and specialize the project. Additionally, the SDK used during generation is recorded in the sdk
property of the project, and SDK-level post_build
profiles are turned into project-specific post-build scripts referenced by path.
Conditional content is removed by taking features into account, and removing all entries that do not match the resolved state of the project. Certain toolchain-specific conditions may at the discretion of the tool implementation be preserved by new project transformation to allow the transformed project to still target multiple toolchains, such as GCC and IAR.
Output Directory¶
By default, the output directory for project generation is the project root directory, but some tools allow setting a custom output directory. The IDE project is written to the output directory together with configuration files from the project and constituent components in the config
subdirectory, and template files from components in the autogen
subdirectory.
Multiple project description files may reside in the same directory, but it is recommended to keep projects separate to avoid conflicts between their config
and autogen
directories. This may be done either by generating the project to a custom directory, or by keeping the .slcp files in separate directories. The Simplicity Studio IDE always generates the project into the same directory as the .slcp file, while the SLC-CLI tool supports setting a custom generation directory.
Dependency Resolution¶
Unresolved Project¶
The project as stored on-disk in a .slcp file is unresolved, meaning that it only contains information about the direct dependencies of the project.
Resolved Project¶
As part of the project generation process, dependencies are resolved.
IDE Project¶
Finally, the resolved project is converted to a project for a specific IDE. The IDE project refers to the source files and include paths from all used components, as well as any configuration files and autogenerated files that were added to the project.