I downloaded Vulkan SDK and installed Vulkan Hardware Capability Viewer at C:\VulkanSDK\1.3.236.0\Bin\vulkanCapsViewer.exe
:

I downloaded Vulkan SDK and installed Vulkan Hardware Capability Viewer at C:\VulkanSDK\1.3.236.0\Bin\vulkanCapsViewer.exe
:
In CMake Tools extension settings I specified my CMake path:
and built my project with MSVC 2022 first and then switched to MinGW.
On my machine with installed MSVC 2022 it automatically generated configuration file %LocalAppData%/CMakeTools/cmake-tools-kits.json
:
[
{
"name": "Visual Studio Professional 2022 Release - amd64",
"visualStudio": "04bbaecf",
"visualStudioArchitecture": "x64",
"preferredGenerator": {
"name": "Visual Studio 17 2022",
"platform": "x64",
"toolset": "host=x64"
}
},
{
"name": "Visual Studio Professional 2022 Release - amd64_x86",
"visualStudio": "04bbaecf",
"visualStudioArchitecture": "x64",
"preferredGenerator": {
"name": "Visual Studio 17 2022",
"platform": "win32",
"toolset": "host=x64"
}
},
I followed this instruction and configured C/C++ extension as follows:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "D:\\dev\\tools\\x86_64-12.2.0-release-win32-seh-rt_v10-rev0\\mingw64\\bin\\g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
Build QT for MacOS separately in Debug and Release configuration:
tar xf qt-everywhere-src-6.4.2.tar.xz
cd ~/build/qt
export MY_QT_SRC_DIR=~/repos/qt-everywhere-src-6.4.2
export MY_MODE=release
#export MY_MODE=debug
export MY_INSTALL_PATH=~/libs/QT6.4/${MY_MODE}/MacOs
${MY_QT_SRC_DIR}/configure -prefix $MY_INSTALL_PATH -c++std c++20 -opensource -confirm-license \
-static -static-runtime -${MY_MODE} -force-debug-info \
-no-openssl -securetransport -DQT_NO_EXCEPTIONS=1 \
-skip qt3d -skip qt5compat -skip qtactiveqt -skip qtcharts -skip qtcoap -skip qtconnectivity \
-skip qtdatavis3d -skip qtdoc -skip qtlottie -skip qtmqtt -skip qtnetworkauth -skip qtopcua \
-skip qtserialport -skip qtpositioning -skip qtquicktimeline -skip qtquick3d -skip qtremoteobjects \
-skip qtscxml -skip qtsensors -skip qtserialbus -skip qtvirtualkeyboard -skip qtwayland \
-skip qtwebchannel -skip qtwebengine -skip qtwebview -skip qtquick3dphysics -skip qtspeech -skip qtlocation \
-skip qthttpserver \
-- -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
&& cmake --build . --parallel \
&& cmake --install .
Probably QT “Fusion” is not an appropriate style for Android apps, because its buttons height is not enough:
The task is to write one_edit_apart
function that determines is it possible to make two given strings equal by replacing, adding or removing one symbol. The equal strings are considered to be equal, for example:
one_edit_apart("cat", "at") == true
one_edit_apart("cat", "cats") == true
one_edit_apart("cat", "cast") == true
one_edit_apart("cast", "cats") == false
one_edit_apart("cat", "cut") == true
one_edit_apart("cat", "dog") == false
The task is trivial, but Yandex interviewers require all the calculation to be done exactly in their inline editor without debugging and compiling and they do not accept the solution until it works for all possible input. The obvious solution is to truncate equal heads and equal tails and check if the lengths of remaining strings are not greater than 1, but if you forgot to handle the case when heads and tails intersect (with “a” and “aa”, for example) they will say “ooops…., you did a newbie mistake that 1-st year students usually do” and if this all takes more than 40 minutes you fail to pass the test. Below I provided the source code they are most likely to accept:
(more…)For example, there is the following content in qt-everywhere-src-6.4.1\qttranslations\translations\linguist_ru.ts
:
<message numerus="yes">
<source>Dropped %n message(s) which had no ID.</source>
<translation>
<numerusform>Удалено %n сообщение, у которого не было ID.</numerusform>
<numerusform>Удалено %n сообщения, у которых не было ID.</numerusform>
<numerusform>Удалено %n сообщений, у которых не было ID.</numerusform>
</translation>
</message>
Build QT6.4.1 for Windows and then build it for Android as follows:
set MY_DRIVE=D:
cd %MY_DRIVE%\dev\build\qta
%MY_DRIVE%
set "CMAKE_ROOT=%MY_DRIVE%\dev\tools\cmake-3.24.2-windows-x86_64\bin"
set "NINJA_ROOT=%MY_DRIVE%\dev\tools\ninja-win"
set "PERL_ROOT=%MY_DRIVE%\dev\tools\Strawberry\perl\bin"
set "MINGW_ROOT=%MY_DRIVE%\dev\tools\x86_64-12.2.0-release-win32-seh-rt_v10-rev0\mingw64\bin"
set "PYTHON_ROOT=%MY_DRIVE%\dev\tools\Python35"
set "JDK_ROOT=C:\Program Files\Android\Android Studio\jre\bin"
set PATH=C:\WINDOWS\system32;C:\WINDOWS
set PATH=%CMAKE_ROOT%;%PATH%
set PATH=%NINJA_ROOT%;%PATH%
set PATH=%MINGW_ROOT%;%PATH%
set PATH=%PERL_ROOT%;%PATH%
set PATH=%PYTHON_ROOT%;%PATH%
set PATH=%JDK_ROOT%;%PATH%
Extract QT sources:
cd /d/dev/repos
tar -xf ../distrib/qt-everywhere-src-6.4.1.tar.xz
Configure QT as follows:
"C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64
set MY_DRIVE=D:
%MY_DRIVE%
cd %MY_DRIVE%\dev\build\qt
set "CMAKE_ROOT=%MY_DRIVE%\dev\tools\cmake-3.24.2-windows-x86_64\bin"
set "NINJA_ROOT=%MY_DRIVE%\dev\tools\ninja-win"
set "PERL_ROOT=%MY_DRIVE%\dev\tools\Strawberry\perl\bin"
set PATH=%CMAKE_ROOT%;%PATH%
set PATH=%NINJA_ROOT%;%PATH%
set PATH=%PERL_ROOT%;%PATH%
set PATH=%MY_DRIVE%\dev\tools\Python35;%PATH%
Found the following code in qt-everywhere-src-6.4.0\qtbase\src\plugins\platforms\android\qandroidplatformtheme.cpp
:
QString QAndroidPlatformTheme::standardButtonText(int button) const
{
switch (button) {
case QPlatformDialogHelper::Yes:
return QCoreApplication::translate("QAndroidPlatformTheme", "Yes");
case QPlatformDialogHelper::YesToAll:
return QCoreApplication::translate("QAndroidPlatformTheme", "Yes to All");
case QPlatformDialogHelper::No:
return QCoreApplication::translate("QAndroidPlatformTheme", "No");
case QPlatformDialogHelper::NoToAll:
return QCoreApplication::translate("QAndroidPlatformTheme", "No to All");
}
return QPlatformTheme::standardButtonText(button);
}