CMake: rework for Qt6 support
This PR rearranges things in the CMake system to make compiling with Qt6 possible 1. Camera API has changed in Qt6, so the camera feature is disabled 2. A previous fix involving QLocale is now version gated. 3. QRegExp replaced with QRegularExpression, see #5343 4. Qt6_LOCATION option added to specify a location to search for Qt6 (see examples below) 5. windeployqt is used to copy Qt6 files into the build directory on Windows Notes for Arch Linux Arch install happened to have qt6-base qt6-declarative qt6-translations installed mkdir build && cd build cmake .. -GNinja -DYUZU_USE_BUNDLED_VCPKG=ON -DYUZU_TESTS=OFF -DENABLE_QT6=YES -DYUZU_USE_BUNDLED_QT=NO Windows (MSVC) Qt wants users to download precompiled libraries via an online installer, it is worth noting that the GPL/LGPL takes precendence over any ... In the Qt Maintenance tool, under a version, such as 6.3.1 Select "MSVC 2019 64-bit" Under Additional Libraries Qt Multimedia may be of use for Camera support For the Web Applet I had to select the following: PDF Positioning WebChannel WebEngine mkdir build && cd build cmake -G "Visual Studio 16 2019" -DQt6_LOCATION=C:/Qt/6.4.0/msvc2019_64/ \ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=YES -DYUZU_USE_BUNDLED_QT=NO \ -DENABLE_QT_TRANSLATION=YES -DENABLE_QT6=YES .. Some numbers for reference (msvc2019_64) Qt5 (slimmed down) 508 MB Qt5.15.2 all in 929 MB Qt6.3.1 1.71 GB Qt6.3.2 1.73 GB Qt6.4.0-beta3 1.83 GB Qt6.4.0 1.67 GB
This commit is contained in:
parent
d23a35dfbd
commit
a75542ad2d
5 changed files with 192 additions and 130 deletions
|
@ -292,7 +292,7 @@ if (APPLE)
|
|||
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
|
||||
elseif(WIN32)
|
||||
# compile as a win32 gui application instead of a console application
|
||||
if (QT_VERSION VERSION_GREATER 6)
|
||||
if (QT_VERSION VERSION_GREATER_EQUAL 6)
|
||||
target_link_libraries(yuzu PRIVATE Qt6::EntryPointPrivate)
|
||||
else()
|
||||
target_link_libraries(yuzu PRIVATE Qt5::WinMain)
|
||||
|
@ -308,15 +308,15 @@ endif()
|
|||
create_target_directory_groups(yuzu)
|
||||
|
||||
target_link_libraries(yuzu PRIVATE common core input_common network video_core)
|
||||
target_link_libraries(yuzu PRIVATE Boost::boost glad Qt::Widgets Qt::Multimedia)
|
||||
target_link_libraries(yuzu PRIVATE Boost::boost glad Qt${QT_MAJOR_VERSION}::Widgets)
|
||||
target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
||||
|
||||
target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include)
|
||||
if (NOT WIN32)
|
||||
target_include_directories(yuzu PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS})
|
||||
target_include_directories(yuzu PRIVATE ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS})
|
||||
endif()
|
||||
if (UNIX AND NOT APPLE)
|
||||
target_link_libraries(yuzu PRIVATE Qt::DBus)
|
||||
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::DBus)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(yuzu PRIVATE
|
||||
|
@ -355,8 +355,13 @@ if (ENABLE_WEB_SERVICE)
|
|||
target_compile_definitions(yuzu PRIVATE -DENABLE_WEB_SERVICE)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_QT_MULTIMEDIA)
|
||||
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::Multimedia)
|
||||
target_compile_definitions(yuzu PRIVATE -DYUZU_USE_QT_MULTIMEDIA)
|
||||
endif ()
|
||||
|
||||
if (YUZU_USE_QT_WEB_ENGINE)
|
||||
target_link_libraries(yuzu PRIVATE Qt::WebEngineCore Qt::WebEngineWidgets)
|
||||
target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::WebEngineCore Qt${QT_MAJOR_VERSION}::WebEngineWidgets)
|
||||
target_compile_definitions(yuzu PRIVATE -DYUZU_USE_QT_WEB_ENGINE)
|
||||
endif ()
|
||||
|
||||
|
@ -364,7 +369,16 @@ if(UNIX AND NOT APPLE)
|
|||
install(TARGETS yuzu)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_BUNDLED_QT)
|
||||
if (WIN32 AND QT_VERSION VERSION_GREATER_EQUAL 6)
|
||||
if (MSVC AND NOT ${CMAKE_GENERATOR} STREQUAL "Ninja")
|
||||
set(YUZU_EXE_DIR "${CMAKE_BINARY_DIR}/bin/$<CONFIG>")
|
||||
else()
|
||||
set(YUZU_EXE_DIR "${CMAKE_BINARY_DIR}/bin")
|
||||
endif()
|
||||
add_custom_command(TARGET yuzu POST_BUILD COMMAND ${WINDEPLOYQT_EXECUTABLE} "${YUZU_EXE_DIR}/yuzu.exe" --dir "${YUZU_EXE_DIR}" --libdir "${YUZU_EXE_DIR}" --plugindir "${YUZU_EXE_DIR}/plugins" --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --verbose 0)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_BUNDLED_QT AND QT_VERSION VERSION_LESS 6)
|
||||
include(CopyYuzuQt5Deps)
|
||||
copy_yuzu_Qt5_deps(yuzu)
|
||||
endif()
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <QComboBox>
|
||||
#include <QFuture>
|
||||
#include <QIntValidator>
|
||||
#include <QRegExpValidator>
|
||||
#include <QRegularExpressionValidator>
|
||||
#include <QString>
|
||||
#include <QtConcurrent/QtConcurrentRun>
|
||||
#include "common/settings.h"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QRegExp>
|
||||
#include <QRegularExpression>
|
||||
#include <QString>
|
||||
#include <QValidator>
|
||||
|
||||
|
@ -29,19 +29,21 @@ public:
|
|||
|
||||
private:
|
||||
/// room name can be alphanumeric and " " "_" "." and "-" and must have a size of 4-20
|
||||
QRegExp room_name_regex = QRegExp(QStringLiteral("^[a-zA-Z0-9._- ]{4,20}$"));
|
||||
QRegExpValidator room_name;
|
||||
QRegularExpression room_name_regex =
|
||||
QRegularExpression(QStringLiteral("^[a-zA-Z0-9._ -]{4,20}"));
|
||||
QRegularExpressionValidator room_name;
|
||||
|
||||
/// nickname can be alphanumeric and " " "_" "." and "-" and must have a size of 4-20
|
||||
QRegExp nickname_regex = QRegExp(QStringLiteral("^[a-zA-Z0-9._- ]{4,20}$"));
|
||||
QRegExpValidator nickname;
|
||||
const QRegularExpression nickname_regex =
|
||||
QRegularExpression(QStringLiteral("^[a-zA-Z0-9._ -]{4,20}"));
|
||||
QRegularExpressionValidator nickname;
|
||||
|
||||
/// ipv4 address only
|
||||
// TODO remove this when we support hostnames in direct connect
|
||||
QRegExp ip_regex = QRegExp(QStringLiteral(
|
||||
QRegularExpression ip_regex = QRegularExpression(QStringLiteral(
|
||||
"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|"
|
||||
"2[0-4][0-9]|25[0-5])"));
|
||||
QRegExpValidator ip;
|
||||
QRegularExpressionValidator ip;
|
||||
|
||||
/// port must be between 0 and 65535
|
||||
QIntValidator port;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue