CPPython uses a plugin-based architecture to support different build systems, package managers, and source control systems. The plugin system is designed to be extensible and modular, allowing for easy integration of new tools and workflows.
CPPython supports three main types of plugins:
Generator plugins integrate with build systems like CMake, providing functionality to generate build files and manage build configurations.
Currently supported generators: - CMake Generator Plugin
Provider plugins integrate with package managers and dependency providers, handling dependency resolution and environment setup.
Currently supported providers: - Conan - vcpkg
The plugin system follows a consistent pattern where each plugin type implements specific interfaces:
-
Generator Interface: Handles build system integration
-
Provider Interface: Manages dependency resolution
-
SCM Interface: Provides version control integration
Each plugin can define: - Configuration schemas using Pydantic models - Synchronization data structures - Build and resolution logic - File generation and management