Project Layout

There is no requirement for a particular project layout, but this kind of layout is convenient for cross-platform projects:

/ProjectName
    /source
    /ui
        /ios
        /android
        /macos
        /javafx
        /web
        /etc...
    /platform (optional)
        /ios
        /android
        /macos
        /windows
        /web
        /etc...

/source - shared cross-platform C++ code.

/ui - folders with different versions of UI code. These may or may not have a one to one correspondence to a particular platform. You may, for example, have a production version of UI for macOS written in Swift and a test version of UI written in Java with JavaFX library, which can run on many different platforms, like Windows, macOS and Linux (it will not look truly native, but for a test UI this is probably fine).

/platform (optional) - folders with platform dependent C++ code, used to access platform specific APIs. On Android this would be C++ JNI code (using Scapix Java Link for example), on iOS/macOS this would be ObjectiveC++ code, etc.