The framework has multiple packaging modes. This page serves as an introduction to them and their subsequent library and executable layouts.
Static vs. Shared mode
When compiling in static mode, all framework, application and wrapper executable code is packaged into a single executable. In shared mode, depending on the platform, the framework, application and wrapper executable are separate atoms that are loaded at runtime. More information below.
Shared mode Windows
On Windows, shared mode produces 2 binaries:
- The
framework-application
library - The wrapper executable
The framework-application
library combines the code of the framework and application into a single DLL, which is then loaded by the wrapper executable or by plugins.
This approach is different from Unix, where there are 3 binaries. This is mainly caused by restrictions placed on us by MSVC and on us trying to discourage shipping the framework system-wide.
Because the library is not supposed to be shipped globally, disabling modules at compile time is a fine thing to do.
Shared mode on Unix
On Unix-based systems, shared mode produces 3 binaries:
- Framework library
- Application library
- Wrapper executable
In most cases, the framework library, produced by building the application locally, is used only in development, as the same application deployed as a production package may use the system-wide framework library.
The application library is a shared library that contains all source code under Source/
.
This layout is preferable on Unix systems, as the framework library can be shipped globally, while allowing plugins to access application code through the application library.
- Home
- Beginner content
- Install guide
- Creating and using the UI components
- The Instance
- The Init Info struct
- Additional features
- Custom type definitions
- C API development
- Config files and Folders
- Interfaces
- Internal Event safety
- Modules system
- I18N
- Plotting
- Knobs
- Spinners
- Toggles
- Text Utils
- Undo/Redo
- CLI Parser
- Theming
- OS
- Opening URLs and using file pickers
- Exec integration
- Fonts
- Unix
- DBus utilities
- XDG integration
- Collaborating with others
- Advanced content
- Loading dynamic libraries at runtime
- Understanding the library layout
- Compilation mode modifiers
- Adding plugin support to your application
- Production export and deployment
- Developer and contributor resources
- Misc