Migrate over to Qt 6 so that we can keep the UI toolkit pegged at the current major version. Unfortunately this also means we have to gut a small feature in the progress dialogs, since the extras module doesn't exist in Qt6 anymore. Few things of note: QVector<> is internally an alias of QList now, so any changeover is due to that to make the semantics a little clearer. QtConcurrent requires arguments to be swapped on some invocations, and discarding instances need to use the global thread pool instead. fromStdList(), etc can be replaced with range constructors. --no-angle and other commands are removed from newer versions of windeployqt QVariant::Invalid (and other type IDs) are deprecated and also break existing functionality. Instead we can return default constructed QVariants where applicable, which restores functionality that would be broken if left as is (e.g. many list would straight up not populate or have wonky size hinting). The reason for this is that the QVariant(QVariant::Type) constructor models a unique kind of internal QVariant state where it's considered to be in an invalid state, but accessing the (supposedly) invalid state will instead return a default constructed value of the internal type. This kinda sucks because this means genuinely invalid states that would warrant an assertion or other type of error would be silently ignored and execution would continue on as normal, so this also enforces correctness a little bit (on top of, well, fixing all the broken UI controls).
4.1 KiB
Prime World Editor
Prime World Editor is a custom editor suite for Retro Studios' GameCube and Wii games, including the Metroid Prime series and Donkey Kong Country Returns.
Clone Submodules First!
Builders on all platforms should ensure submodules are up to date with the current PrimeWorldEditor
by running git submodule update --init --recursive.
Building on Windows
Requirements
64-bit Note: Except for Visual Studio and the Qt installer, ensure 64-bit (x86-64, x64) packages are installed.
- Visual Studio 2022 (Desktop development with C++)
- Qt 6.5+ (MSVC 2022 64-bit specification)
- LLVM 6.0.1 x86-64 installation; currently must be installed to
C:\Program Files\LLVM\ - Python 3 x86-64
Build using Qt Creator
Compiler Note: Before starting, it is wise to select the 64-bit compiler by opening Tools > Kits > Kits tab. The C and C++ compilers should be set to Visual Studio Community 2022 (amd64).
CMake Note: At the time of writing, Qt Creator will search for a user-installed CMake but this is not necessary.
The CMake that comes with Visual Studio may be manually selected by opening Tools > Kits > CMake tab, then adding
a manual CMake with the path:
C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe.
Debugger Note: To use Qt Creator for debugging, Debugging Tools for Windows must be installed from the Windows SDK package. Once installed, the Qt Creator kit should automatically detect CDB. Make sure the x64 version is selected.
- File > Open File or Project
- Select CMakeLists.txt at root of cloned PrimeWorldEditor
- Select desired build configurations within the Desktop Qt Kit. It is generally fine to just check Debug and Release.
- Click Configure Project
- Wait for dependencies to build and CMake project to generate (this may take a while).
- Edit/Build/Debug/Run
Build using Visual Studio
Qt Note: It may be necessary to edit both CMAKE_PREFIX_PATH entries in the CMakeSettings.json file.
They should be set to C:/Qt/<QT VERSION>/msvc2022_64/lib/cmake/Qt6.
- File > Open > CMake
- Select CMakeLists.txt at root of cloned PrimeWorldEditor
- Wait for dependencies to build and CMake project to generate (this may take a while).
- Edit/Build/Debug/Run
Build using Command Line
- Launch x64 Native Tools Command Prompt for VS 2022
cd <PATH TO PrimeWorldEditor ROOT>mkdir buildcd buildcmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=C:/Qt/<QT VERSION>/msvc2022_64/lib/cmake/Qt6 ..ninja- PrimeWorldEditor.exe is found in the
build/bindirectory.
Building on macOS
Requirements
- Xcode 10.2+
- Qt 6.5+ (macOS specification)
- cmake, ninja and python installed using Homebrew
Build using Xcode
cd <PATH TO PrimeWorldEditor ROOT>mkdir buildcd buildcmake -G Xcode -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt6 ..- Open PrimeWorldEditor.xcodeproj
- Edit/Build/Debug/Run
Build using Command Line
cd <PATH TO PrimeWorldEditor ROOT>mkdir buildcd buildcmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/<QT VERSION>/clang_64/lib/cmake/Qt6 ..ninja- PrimeWorldEditor.app is found in the
build/bindirectory.
Building on Linux
Requirements
- A working compiler toolchain (GCC or Clang)
- cmake, ninja, python3, qt6 (dev), clang (dev) packages
Build using Command Line
cd <PATH TO PrimeWorldEditor ROOT>mkdir buildcd buildcmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..ninja- PrimeWorldEditor is found in the
build/bindirectory.