Egoboo Development Diary 7

We are happy to announce that Egoboo migrated to a CMake build system.

Introduction

Egoboo migrated to a CMake build system. Most developers most likely have at least heard of CMake, otherwise the official CMake website provides a short introduction. In short,  CMake allows for managing the build files in an operating system and in a compiler-independent manner. Before the transition to a CMake build system, build files for each operating system and each compiler were maintained. Was the migration effort worth it? We do think so. Let’s have a look at some advantages of a CMake build system.

Improved portability

With its new build system Egoboo builds and runs on Cygwin/GCC, Windows/Visual Studio 2017 Community,  Linux/CLANG/GCC, and OS X/CLANG. Egoboo most likely builds and runs on countless other environments thanks to CMake. If this support is not given, then it can be added in a consistent uniform manner to a CMake build system.

Improved accessibility

Migration from the old build systems collection to the new CMake-based build system increases the accessiblity of Egoboo. The esier it is for a developer to familairize himself with a component, the higher is the accessibility of that component.

The old build system collection had  low accessibility, the new CMake build system a higher accessibility. Why? There are many reasons, but two stand out:

  • A dev is more likely to be familiar/able to easily familarize herself with the single language of the CMake driver than she’s likely to be familiar/able to easily familiarize herself with all the languages of all the operating system- and compiler-specific drivers.
  • The language of the CMake-driver is easy compared to some of the languages of the operating system- and compiler-specific drivers.

Given that, it is easier for a developer to familiarize himself with the new CMake build system than to familiarize himself with the old build system collection, hence the accessibility of the  former is higher than the accessibility of the latter.

So replacing the old build system collection (lower accessibility) by the new CMake build system (higher accessibility) increases the accessibility of Egoboo’s build system and hence the accessibility of Egoboo itself.

Improved maintainability

Egoboo is a cross-platform project and supports several platforms officially.  Its old build system was maintained in an operating system and in a compiler-dependent manner. The effort to maintain the build system of a cross-platform C++ project in a platform and compiler-dependent manner is certainly viable for larger teams and certainly possible for smaller teams and it has benefits: However, this binds a lot of resources that can be better spend on other parts of the software.

A particular case for CMake is refactoring: CMake aids refactoring. Refactoring might involve changing components, splitting components, adding, replacing, or removing components. Changes to components also involve changes to build system files. Clearly,  the effort of changing a single batch of CMake build files compared to changing a batch of build files for each operating system and for each compiler.

Conclusion

Having a CMake-based build system is a good basis for many thing. CMake aids us to induce and to adopt to changes worksflows and organizations. And we feel like, there needs to be a change to this organization.

We feel like, more vibrant communication with players and developers alike is appreciated. Firstly, this blog will be updated on a weekly basis and we will answer pressing questions of developers and enthusiasts will be answered. Secondly, substantial efforts will be made to attract new developers and help them to get started. That is, we shift our attention from Egoboo as a software to Egoboo as an open source project. Because Egoboo needs you.

Stay tuned, update coming next week.

Leave a Reply

Your email address will not be published. Required fields are marked *