Configuration
Contents
General
- independent from the platform (windows/unix/.NET) [conditions]
- one file with multiple configurations (e.g. debug, release build) [targets]
- exclude as regexp pattern [file patterns]
- global ignore patterns (e.g. cvs/svn) [file patterns on targets]
- libraries [library group]
- relative paths [paths relative to ecf file location]
- actions before/after run/compile (e.g. start a server) [pre-/postcompile actions/tasks]
- variables [used in locations and for custom conditions]
A system consists of multiple targets. A target can extend another target. A target can have some libraries, assemblies, clusters and override clusters. A library has an associated target. A cluster can have a parent cluster. An override cluster has a some groups it overrides.
Libraries
A library specification includes needed clusters, assemblies, libraries, externals and tasks. If a library is included in a project only classes in clusters can be accessed from this project because everything else is considered a dependency of the library and not content of the library itself.
Overrides
It is possible to specify override clusters in a project (but not in a library). Classes in there with the same name as classes in other clusters/libraries will override those other classes. That means they will replace the implementation of the other class.
File pattern
The file pattern match against the relative path in Unix format in a cluster. e.g. if the cluster is in C:\mycluster
Pattern | Matches |
---|---|
storage/table |
C:\mycluster\storage\table\* C:\mycluster\storage\table.e C:\mycluster\something\storage\table\* |
^/storage/table/ |
C:\mycluster\storage\table\* |
^/.*/test/ |
C:\mycluster\a\test\* C:\mycluster\b\test\* |
/test/ |
C:\mycluster\a\test\* C:\mycluster\b\test\* C:\mycluster\something\table\test\* |
Settings
Name | Description | Value range | Default value |
---|---|---|---|
address_expression | Are simplified address expressions enabled? | true/false | false |
array_optimization | unused | true/false | |
automatic_backup | Automatically generate a backup during recompilation? | true/false | false |
check_generic_creation_constraint | Check generic creation constraint? | true/false | true |
check_vape | Enforce VAPE validity constraint? | true/false | true |
console_application | Is the project a console application? | true/false | false |
force_32bits | Force compilation for 32bits? (.NET only) | true/false | false |
cls_compliant | Should generated assemblies be marked as CLS compliant? | true/false | true |
dead_code_removal | Should unused code be removed? | true/false | true |
dotnet_naming_convention | Should names follow the .NET naming convention? | true/false | false |
dynamic_runtime | Should the generated executable use a shared library of the runtime? | true/false | false |
exception_trace | Should a complete exception trace be generated in the finalized version? | true/false | false |
executable_name | Name of the generated binary. | configuration string | use system name |
full_type_checking | Full type checking? | true/false | false |
il_verifiable | Should the generated binary be IL verifiable? | true/false | true |
inlining | Should inlining be enabled? | true/false | true |
inlining_size | Maximal number of instructions in a feature for the feature to be inlined. | integer 0..100 | 0 |
java_generation | unused | true/false | |
library_root | Absolute path to use as base for relative paths. | path | location of the ecf file |
line_generation | Generate extra information for external debuggers? | true/false | false |
metadata_cache_path | Location where information about external assemblies is stored. | path | $ISE_EIFFEL\dotnet\assemblies |
msil_assembly_compatibility | unused | true/false | |
msil_classes_per_module | Number of classes generated per .NET module during incremental compilation. Increasing this value will slow down the incremental recompilation, but speed up the time to load the assembly while debugging in workbench mode. | integer > 0 | 5 |
msil_clr_version | Version of the .NET runtime to use. | installed .NET version | highest installed .NET version |
msil_culture | MSIL culture | string | |
msil_generation | Generate .NET code? | true/false | false |
msil_generation_type | Type of binary to generate. | exe/dll | exe |
msil_key_file_name | Key to be able to add the generated binary to the Global Assembly Cache (GAC). | file | |
msil_use_optimized_precompile | Use an optimized version of a precompile? | true/false | false |
multithreaded | Generate a multithreaded application? | true/false | false |
old_verbatim_strings | Use the old format for verbatim strings? | true/false | false |
platform | Override the detected platform to use in conditions. | valid platform as in conditions | detected platform |
external_runtime | External runtime | file | |
shared_library_definition | Specify the file the compiler uses to generate the exported functions. | file | |
use_cluster_name_as_namespace | Should cluster names be used as namespaces? | true/false | true |
use_all_cluster_name_as_namespace | Should names of folders in recursive clusters be used as namespaces? | true/false | true |
Questions and Problems
- When are two libraries the same? UUID
Multiple library usage
Problem
System Application [1]library A [2]library B
System A [3]library C option Yes
System B [4]library C option No
We have a conflict for the option on library C.
Solution
If the library is directly used in Application, use the options set on the group there ([1], otherwise use the options of the Application system.