About
Configuration variables allow to define the behaviour of the application. Such a variable can be set in various ways (see below) and can be read in the source code.
- Note
- The help text of all registered configuration variables is listed when Cinema 4D is started with the "help" command line argument. A console window can be opened with the command line argument "g_console=true".
Macros
A configuration variable can be defined inside a source code file using one of these macros. The variable allows then to access its value.
The so defined variables can be simply accessed using the created global variable:
if (g_copy_source.IsEmpty())
if (g_copy_destination.IsEmpty())
return maxon::IllegalArgumentError(
MAXON_SOURCE_LOCATION,
"g_copy_source is set but g_copy_destination is empty."_s);
const maxon::Url destinationDir(g_copy_destination);
return maxon::IllegalArgumentError(
MAXON_SOURCE_LOCATION,
"g_copy_destination is not an existing folder."_s);
sourceFile.IoCopyFile(targetFile, g_copy_overwrite,
false)
iferr_return;
Definition
The value of a configuration variable can be set in multiple ways. It can be set
- within the application itself (default value).
- in a configuration file
config.txt
next to the application.
- in an environment variable.
- as a command line argument.
:: Windows batch file example
:: Start Cinema 4D with the custom command line argument "g_printErrors" and the built-in argument "g_console"
"CINEMA 4D.exe" g_printErrors=true g_console=true
Configuration
A configuration variable can be accessed in any source code file using the maxon::Configuration class:
{
if (executionFailed && printError)
{
}
}
It is also possible to register configuration variables at runtime. With these functions the variables are marked as used (maxon::CONFIGURATIONENTRY_STATE::USED) and the help text will be defined.
{
maxon::Configuration::AddHelpForOption(customDebug, "all"_s, false, true, category, "Print all debug information.")
iferr_return;
maxon::Configuration::AddHelpForOption(customDebug, "warning"_s, false, false, category, "Print only warnings.")
iferr_return;
maxon::Configuration::AddHelpForOption(customDebug, "error"_s, false, false, category, "Print only errors.")
iferr_return;
}
This will be displayed in the console like this:
g_customDebugLevel=[string|all|warning|error]
These broadcast functions are used to copy a value into all modules that defined the given configuration variable.
Further Reading