build qt source in vs2022 win11

Don't download qt source in tar.xz format, for in Windows, if we unzip it using 7zip, some deep file paths may be truncated, for example, ECMFindModuleHelpersStub.cmake referred by FindEGL.cmake in qtbase\cmake\3rdparty\extra-cmake-modules\find-modules.

This time I download qt-everywhere-src-6.2.2.zip.

In preparation, as to README.md, ActivePerl must be installed, it sucks, we must have an account of it. However, we can find another perl alternative, Strawberry Perl portable edition.

When we build, qt source root path should be short enough like d:\qt.

bld.bat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
set curpath=%CD%
set vspath=D:\cext\Program Files\Microsoft Visual Studio\2022\Enterprise
set perlpath=D:\work\open\strawberry-perl-5.32.1.1\perl\bin
set clangpath=D:\work\open\libclang
set installpath=D:\cext\Qt
 
call "%vspath%\VC\Auxiliary\Build\vcvars64.bat"
 
set oldpath=%path%
set path=%path%;%perlpath%
 
if not exist %curpath%\bld @mkdir %curpath%\bld
 
cd %curpath%\bld
 
cmake.exe ^
	-G "Ninja" ^
	-DCMAKE_INSTALL_PREFIX:PATH=%curpath%\bld ^
	-DCMAKE_BUILD_TYPE="Debug" ^
	-DFEATURE_clang="ON" ^
	-DCMAKE_PREFIX_PATH="%clangpath%" ^
	-DCMAKE_MAKE_PROGRAM="%vspath%\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" ..
 
cmake --build . --parallel
rem cmake --install . --prefix %installpath%
 
if 0 == 1 (
	rem if we build QtDoc, we must add clang path to system path, otherwise we will get exit code 0xc0000135.
	set path=%path%;%clangpath%\bin
	cmake --build . --target docs
)
 
set path=%oldpath%
cd ..

Modify paths at the beginning of above bld.bat and put the batch file in the qt source root directory, then execute it.

ps1: all in one release of qt is like below url, but we should know all in one is not available since Qt 5.15.
http://download.qt.io/archive/qt/5.9/5.9.2/qt-opensource-linux-x64-5.9.2.run
And we need download online installer for Qt above 5.15 if we don't want to build from scratch:
https://download.qt.io/official_releases/online_installers/

Refer to:
https://ninja-build.org/
https://strawberryperl.com/releases.html
https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-windows-x86_64.msi

https://download.qt.io/development_releases/prebuilt/libclang/
https://download.qt.io/archive/qt/6.2/6.2.2/single/qt-everywhere-src-6.2.2.zip
https://download.qt.io/official_releases/qtcreator/6.0/6.0.1/qt-creator-opensource-windows-x86_64-6.0.1.exe

https://stackoverflow.com/questions/14807294/how-to-install-cmake-c-compiler-and-cxx-compiler
https://www.cnblogs.com/gearslogy/p/7435202.html

avoid rebuilding all in vs2010 everytime

  1. remove all nonexisted files in vs2010 project tree view by double clicking one by one.
  2. remove readonly attributes of file in explorer project directory recursively.
  3. reset all modify times to recent by

    1
    
    find . | xargs touch {}
  4. reboot system.

open sourced pdf reader

Windows lacks non money smell softwares.

If we encouter warning C4819 when building, change system setting 'Language for non-Unicode programs' to 'US/English' and reboot.

https://www.sumatrapdfreader.org/docs/Contribute-to-SumatraPDF
https://github.com/sumatrapdfreader/sumatrapdf

Tricks,

SumatraPDF.exe -invert-colors

refer to:
https://www.cnblogs.com/Steven-HU/p/14547749.html
https://www.cnblogs.com/chenxi188/p/15585702.html

bad security of vmware guest isolation from host

1. without administrative privilege, only using guest os user password, we can copy any file from guest to host by

#startup win7.vmx first.
vmrun.exe -gu guest_os_user_name -gp guest_os_user_password copyFileFromGuestToHost "E:\vmimg\win7\win7.vmx" c:\windows\system32\notepad.exe e:\notepad.exe

2. example about communication between guest and host using vmware backdoor routines:
https://github.com/vmware/open-vm-tools/blob/master/open-vm-tools/services/plugins/dndcp

refer to:
n0nick

start tiny web server with current folder as http root path

httpd.py

1
2
3
4
5
6
7
8
9
10
from http.server import HTTPServer, SimpleHTTPRequestHandler
 
handler = SimpleHTTPRequestHandler
handler.extensions_map.update({
	".js": "application/javascript",
})
 
server_address = ("", 8008)
server = HTTPServer(server_address, handler)
server.serve_forever()

how to run

1
python3 ./httpd.py

unknown filesystem type 'vmhgfs'

because vmhgfs-fuse is not built,

1
apt install libfuse-dev

before compiling open-vm-tools.

following is the autorun scripts, e.g. open-vm-tools are installed in /home/work/vmware/open-vm-tools/open-vm-tools/installed.

  • /etc/xdg/autostart/vmware-user.desktop

    1
    2
    3
    4
    5
    6
    
    [Desktop Entry]
    Type=Application
    Encoding=UTF-8
    Exec=/home/work/vmware/open-vm-tools/open-vm-tools/installed/bin/vmware-user-suid-wrapper
    Name=VMware User Agent
    X-KDE-autostart-phase=1
  • /etc/rc.local

    1
    2
    3
    4
    5
    6
    7
    
    #!/bin/bash
    (
    cd /home/work/vmware/open-vm-tools/open-vm-tools/installed/bin/
    LD_LIBRARY_PATH=`pwd`/../lib:$LD_LIBRARY_PATH ./vmtoolsd &
    ./vmhgfs-fuse /mnt/hgfs/
    ./vmware-user
    )
1
2
chmod +x /etc/rc.local
reboot

git备忘录

1
2
3
4
5
6
7
8
git branch -a
git fetch
git checkout
git remote -v
git remote set-url origin https://github.com/euhat/EuhatExpert.git
git reset --soft HEAD^
git clean -xfd
git submodule update --init --recursive

copy and paste between vmware centos guest and host failed

some centos distribution has no open-vm-tools package, so we need to compile it by hand:

yum install libmspack-devel pam-devel xmlsec1-devel libXext-devel libXinerama-devel libXrender-devel libXrandr-devel libXtst-devel gtk3-devel gtkmm30-devel libtirpc-devel rpcgen libtool-devel

git clone https://github.com/vmware/open-vm-tools.git
cd open-vm-tools/open-vm-tools
autoreconf -i
./configure
make
make install

vmware-user

ps. how to enable auto-fitting with resolution

#install driver
yum install xorg-x11-drv-vmware
#add option to configure open-vm-tools
./configure --enable-resolutionkms
make
make install
#startup two vmtoolsds, one for vmusr, one for vmsvc which serves auto-resizing
vmware-user
vmtoolsd

refer to:
https://docs.vmware.com/en/VMware-Tools/11.3.0/com.vmware.vsphere.vmwaretools.doc/GUID-8B6EA5B7-453B-48AA-92E5-DB7F061341D1.html