In **general**, variables in `if()` commands should not be expanded "by hand" before use, because substitution occurs before the `if()` command is parsed: in practice that means that a command like if(${A} STREQUAL "A") can expand to (depending on the value of A being empty, "B" or "A") if( STREQUAL "A") if(B STREQUAL "A") if(A STREQUAL "A") Then the `if()` command is processed, leading to: - a syntax error - comparing the value of variable B against string "A" - comparing the value of variable A (it's "A" because that is what `${A}` expanded to) against string "A" This is explained in section *Variable Expansion* of the documentation of the `if()` command, but keeps tripping people up.
Plasma Framework
Foundational libraries, components, and tools of the Plasma workspaces
Introduction
The plasma framework provides the following:
- QML components
- A C++ library: libplasma
- Script engines
QML components
org.kde.plasma.core
Bindings for libplasma functionality, such as DataEngine and FrameSvg, see @ref core.
org.kde.plasma.components
Graphical components for common items such as buttons, lineedits, tabbars and so on. Compatible subset of the MeeGo components used on the N9, see @ref plasmacomponents.
org.kde.plasma.extras
Extra graphical components that extend org.kde.plasma.components but are not in the standard api, see @ref plasmaextracomponents.
org.kde.plasma.plasmoid
Attached properties for manipulating the current applet or containment, see @ref libplasmaquick
libplasma
This C++ library provides:
- rendering of SVG themes
- loading of files from a certain filesystem structure: packages
- data access through data engines
- loading of the plugin structure of the workspace: containments and applets
See @ref libplasma.
Script engines
Provides support to create applets or containments in various scripting languages.
Description
Languages
C++
63.9%
QML
29.4%
CMake
3.3%
Shell
1.3%
Python
1%
Other
1%