Pikachuxxxx / Razix

A Cool High Performance Game Engine
https://pikachuxxxx.github.io/razix-website/
Apache License 2.0
470 stars 25 forks source link

Linux build failing #334

Open Frost-54 opened 6 months ago

Frost-54 commented 6 months ago

Hi, I encountered a few issues when building Razix on Linux:

  1. Some MSVC specific extensions are used(e.g omitting template on dependent types)
  2. Some platform specific stuffs(e.g macros)
  3. Some APIs are only implemented for Windows(e.g RZSplashScreen, entry point)
  4. Headers are not self-contained(not fatal, but it makes working in VSCode + clangd harder)
  5. Build system related issues(e.g hard coded paths)
  6. Some extensions use deprecated Qt APIs that are removed in Qt6.
  7. Tracy's embedded imgui conflicts with our imgui(can be fixed by adding tracy/ prefix when including tracy headers).

Any plan on fixing these? I am happy to work on these. Thanks!

Pikachuxxxx commented 6 months ago

Hi, Thanks for trying to build for linux. Unfortunately I don't officially support linux, in theory with the changes you mentioned above, it's possible. Some amount of work needs to be done for it work properly such as the porting the premake build files, some platform related code, c++ gnu support etc. I don't have a timeline to support linux anytime soon. Once we port the premake files, it should be fairly easy to use with make/VSCode as well.

  1. Some MSVC specific extensions are used
  2. Some platform specific stuffs(e.g macros)

I believe this needs to be addressed, by having multiple defines in the core file we can make this compiler independent. I've tested with clang (any maybe consoles too🀫) sometime back and I think this should be straightforward to implement.

  1. Some APIs are only implemented for Windows(e.g RZSplashScreen, entry point)
  2. Headers are not self-contained

Minor refactoring and filling out the platform realted code should resolve these issues I guess?

  1. Some extensions use deprecated Qt APIs that are removed in Qt6.

As for this I think using QT5.15.2 or 5.14.2 are the best version, supporting Qt6 will require some major refactoring. I only support Qt5 for now.

But if you would like to contribute you're welcome, I will try to support as much as possible.😁😁😁