zerodaycode / Zork

Project manager and builder automation tool for modern C++ projects
MIT License
151 stars 10 forks source link

Multiple compiles per configuration file #131

Open TheRustifyer opened 2 months ago

TheRustifyer commented 2 months ago

Feature Request

Is your feature request related to a problem? Please describe.

Currently, a single configuration file allows the user to declare only one compiler configuration. It would be beneficial to enable users to configure multiple compilers within a single configuration file, eliminating the need for separate configuration files for each compiler.

Furthermore, it would be advantageous to allow users to specify an array of available operating systems for these configurations. This would enable users to conditionally configure compilers based on the underlying operating system. Describe the solution you'd like

Describe the solution you'd like

One straightforward solution could be to introduce named entries, similar to the targets feature, where users can configure all the compilers and variations they need. Later, we could simply iterate through each entry in the map. However, this approach would require matching the model.compiler.cpp_compiler throughout the codebase or retrieving it from the hashmap, which could introduce code that is prone to errors.

A better alternative, using a similar approach, would be to introduce a new entity within the configuration file using the [compiler] attribute as [compiler.<compiler_identifier>]. We could then create an adapter that generates a linear collection of standard configuration files. This way, the codebase wouldn’t need extensive modifications wherever the compiler configuration is referenced (which is practically everywhere). Once the adapter generates the linear collection, we can iterate over them with minimal code changes, extending functionality without requiring internal API modifications all over the codebase.