• Dear Cerberus X User!

    As we prepare to transition the forum ownership from Mike to Phil (TripleHead GmbH), we need your explicit consent to transfer your user data in accordance with our amended Terms and Rules in order to be compliant with data protection laws.

    Important: If you accept the amended Terms and Rules, you agree to the transfer of your user data to the future forum owner!

    Please read the new Terms and Rules below, check the box to agree, and click "Accept" to continue enjoying your Cerberus X Forum experience. The deadline for consent is April 5, 2024.

    Do not accept the amended Terms and Rules if you do not wish your personal data to be transferred to the future forum owner!

    Accepting ensures:

    - Continued access to your account with a short break for the actual transfer.

    - Retention of your data under the same terms.

    Without consent:

    - You don't have further access to your forum user account.

    - Your account and personal data will be deleted after April 5, 2024.

    - Public posts remain, but usernames indicating real identity will be anonymized. If you disagree with a fictitious name you have the option to contact us so we can find a name that is acceptable to you.

    We hope to keep you in our community and see you on the forum soon!

    All the best

    Your Cerberus X Team

The development tools for Cerberus?

Wingnut

Well-known member
3rd Party Module Dev
Tutorial Author
Joined
Jan 2, 2020
Messages
1,414
If you happen to want to help develop Cerberus on macOS and Windows, what languages and applications
do you need to learn for each platform?

* For example, for macOS, are the tools Xcode + Swift or Objective and some extra tools to develop TED?
Could you tell something about the complete toolchain used here?

* What about Windows10? Visual Studio Community and C# or C++? Any special libraries or frameworks that you need to know about?

* Finally, If you want to develop it for Linux what Linux flavour or flavors would be preferred to use?
Maybe it would be a good question to ask what the pros and cons for the major Linux distibutions would be?

TIA
 
If you happen to want to help develop Cerberus on macOS and Windows, what languages and applications
do you need to learn for each platform?
Depends on which of the targets.

Languages: C++, Objective-C, C#, Java, JScript, HTML5, make script, bash, powershell and of course Cerberus.
Additional knowledge:
Android SDK, Standard C/C++ libraries (min C11), OpenGL, OpenGL-ES, OpenAL, CURL, OpenSSL.
EDIT:
You will also need to know how to use the git versioning system.

Mac OS:
XCode with command line tools.
Requires knowledge of iOS SDK, OS X SDK, application bundles and XCode project files.
Care has to be taken here when creating or updating xcodeproj files, as not everyone will be using the latest XCode tool chain or be on the latest
version of OS X etc. So you have to use the first XCode version that specifically targeted the oldest Apple OS X version still in use.
Languages used: C++ with Objective-C glue code.

Windows:
Visual Studio 2017, TDM-MinGW 4.X-5.1.0 with optional CodeBlocks or any other cross platform editor.
The current Visual Studio project files are old, and if I remember are for VS2010.
The use of MinGW requires knowledge of makefiles and GCC options.
Requires knowledge of Visual Studio for those targets that can use MSVC.

Linux:
Ubuntu/Linux Mint (one of the LTS versions currently favouring the code name Bionic).
GCC and development packages with optional Codeblocks or any other cross platform editor.
Requires knowledge of packages, makefiles and GCC options.
Why Ubuntu/Linux Mint, they're the most used distribution. Trying to support other distributions can become a nightmare.

The IDE aka TED:
Qt SDK versions 5.9.x (or if you are feeling brave try getting it to work with newer versions of Qt).
It's best to download the online installer application and select the Qt SDK version to use.
Requires knowledge of Qt and C/C++.
Issues with older Qt SDK's:
They don't come with debug symbols and on windows, they only target specific architectures and versions of Visual Studio.

TRANSCC:
And if you mess with transcc, follow the coding style of the rest of transcc (this also applies to any other modules). Make sure that it will still work on the other two supported platforms. Plus, never add commands or additional functionality directly to transcc. It's best to create such things as a module where possible.
And never use preprocessor directives with the global 'HOST' to determine the host operating system. The nature of transcc will not translate code for any other host, meaning that base tools such as transcc will not be able to compile correctly from the original C++ source code on the main desktop platforms. Use the function HostOS to determine the host operating system. The code will always get translated into the native for the back end compiler to compile.

NATIVE CODE: C++ etc
When writing native code, use it's preprocessor directives to determine the host operating system and the native compiler being used.
It's also advisable to implement a 'code guard' to stop multiple instances from getting duplicated to the main code. Yes I have see this happen with a custom function I wrote.
e.g.
#Ifndef MY_CODE_GUARD
#define MY_CODE_GUARD
[your code]
#endif

EDIT 2:
SPECIAL NOTE HERE:
Make use of the project template files to do some of the work. Visual Studio and XCode project files do allow the use of built in scripting for prebuild and post build, as well as the passing of special environment variables. The motto here is why reinvent the wheel when someone else has already done it.
 
Last edited:
Ehm, why should you never use a preprocessor directive to detect the host system?
 
Same question here. I saw there is a global variable or something called HostOs , so there is no need, but the why is also interesting.
 
Btw. Define trans. The module framework or transcc the tool? I am sure issue comes about my recent Include command. What would you have done differently and why?

Include is part of the language, so defining it inside the trans framework made sense to me.
The resulting task is a build one, so placing the action inside builder.cxs was natural for me.
 
I apologise to all for not making it a bit more clear. It was late and I had been on my feet since the crack of dawn jumping between jobs of decorating, baking and the garden, so I wouldn't have been at my best when I wrote the above. I have now made it a bit more clear.
So @Jimmy please reread.

What would you have done differently and why?
I would try to keep things as modular as possible for ease of maintenance and debugging. It can get messy coding for cross platform. I try to keep the KISS principle in mind when coding. Though trying to do that with Mr S's code is a bit of a challenge.
 
Thanks! This is alot to take in ;)

I'm concerned about how to do be able to do Windows development because my main machine only have Windows 7 in a VirtualBox. Is this setup okay or do you really need Win10 when doing development?

I do have Win10 but only on weak computers that don't have the space and power to run Visual Studio. I run and code Cerberus-X on this machine perfectly, but VS wouldn't even fit.

Do I have to buy Win10 to or maybe there's a free option to do Windows development?
Was I imagining things or did Microsoft used to have a free image on their website with Windows 10 and Visual Studio on it? It was supposed to be free for personal developers I think? If so I guess this might be an interesting route for doing Windows development without owning the original Win10. Any other suggestions?
 
Don't get overwhelmed by this list of requirements! It is the full list to completely take over cerberus development ;)
You can always start developing with bare cerberus knowledge. Once you present a suggestion for improvement, you will get some feedback on it and some things just work out by trial and error.
 
I'm concerned about how to do be able to do Windows development because my main machine only have Windows 7 in a VirtualBox. Is this setup okay or do you really need Win10 when doing development?
Virtual machines are not the best option for testing, but you can develop with them. But you have to take into account that these are still emulations. You should still be able to work with Windows 7, but now that the support is at the End of Life. You should consider upgrading to Windows 10.

I do know that the 64 bit version of Windows 10 Pro, has support for Windows Subsystem for Linux (version 2) that can be activated and with a bit of work, can have a Linux install downloaded from the Microsoft store using a graphical user interface via VcXsrv; a Windows XServer. This means you can kill two birds with one stone and not have to go through having either two dedicated machines or a dual boot set up. Version two of the Windows Subsystem for Linux is not an emulation, but supports direct communication to the hardware.

Do I have to buy Win10 to or maybe there's a free option to do Windows development?
Was I imagining things or did Microsoft used to have a free image on their website with Windows 10 and Visual Studio on it? It was supposed to be free for personal developers I think? If so I guess this might be an interesting route for doing Windows development without owning the original Win10. Any other suggestions?
Windows 10 is Free to download, but it needs to be activated with a product key. There is no 'special free' developer version. You may be getting mixed up with the Windows Insider version where they use you as a guinea pig. According to one source, Windows 10 is fully functional, apart from a water mark nag at the bottom right hand side of the screen telling you to activate Windows. You would have to check for yourself if there are any other limitations.

It is the full list to completely take over cerberus development
Not a cat in hell's chance of me then. I'd start from scratch to get rid of 98% of the complexity.
 
Last edited:
Regarding Tools, what Ted lacks is code completion.
Ted2go, which is the ide for monkey2, has very interesting code completion.
The ide is encoded in monkey2, from time to time I study how it all works, especially code completion.
I think that anyone who wants to collaborate and help in the development of Cerberus, code completion in Ted would be a good option.
 
Last edited:
There is a start in Ted, i think you press CTRL + Space to have it show up.
 
I re-read the requirements now. Does this all means that you do not need to install QT if you don't mean to change the sourcecode of Ted2go? There are precompiled binaries on the GitHub for that right?
 
Ted2go is Monkey2 ide. To build Ted from the gh repository, you need to install qt.
 
Where is the instructions how to actually compile? It was not in this thread?
And do you need to able QT 4.8 I can only find the online installer for QT3.x.x?
 
There is information in the Building.txt file in the src folder and inside the rebuildall scripts there are also some useful hints.

Does this all means that you do not need to install QT if you don't mean to change the sourcecode of Ted
You can just take the executable file from the binary package on itch.io.
If you only develop stuff from the normal modules of cx you don't even have to compile anything.

These are the tools that are build with rebuildall scripts:
[bool]$buildtrans = 1, [bool]$buildLauncher = 1, [bool]$buildmakedocs = 1, [bool]$buildcserver = 1, [bool]$buildted = 1
 
Back
Top Bottom