Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

MSYS2: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(add section about the perils of msys paths)
(Split multiple commands into separate lines.)
 
(One intermediate revision by one other user not shown)
Line 2: Line 2:
[[Category:MinGW]]
[[Category:MinGW]]
__TOC__
__TOC__
[http://sourceforge.net/projects/msys2/ MSYS2] and [https://github.com/msys2 MSYS2] (Minimal SYStem 2) is an independent rewrite of MSYS, a (command-line) shell for development usage, and based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 (from "MinGW-builds"), with the aim of better interoperability with native Windows software.
[http://sourceforge.net/projects/msys2/ MSYS2] and [https://github.com/msys2 MSYS2] (Minimal SYStem 2) is an independent rewrite of MSYS, a (command-line) shell for development usage, and based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 (from "MinGW-builds"), with the aim of better interoperability with native Windows software.
It includes: MSYS2-shell and MinGW-w64 Win32 shell & MinGW-w64 Win64 shell.
It includes: MSYS2-shell and MinGW-w64 Win32 shell & MinGW-w64 Win64 shell.
Line 16: Line 17:
or (option-D), a user can download pre-built binary files of Qt & QtCreator (dynamic/shared and/or static built editions) inside MSYS2, and run+use them instantly without compiling.
or (option-D), a user can download pre-built binary files of Qt & QtCreator (dynamic/shared and/or static built editions) inside MSYS2, and run+use them instantly without compiling.


== Obtain & Install ==
==Obtain & Install==


[https://msys2.github.io/ MSYS2], [https://msys2.github.io/ MSYS2]. Use HTTPS based secure connection and obtain MSYS2. Run the installer binary. Install MSYS2 in C:drive in "msys2" folder.
[https://msys2.github.io/ MSYS2], [https://msys2.github.io/ MSYS2]. Use HTTPS based secure connection and obtain MSYS2. Run the installer binary. Install MSYS2 in C:drive in "msys2" folder.


== Initial Setup of MSYS2 ==
==Initial Setup of MSYS2==


* Run MSYS2 shell (Command Prompt). C:2\msys2_shell.bat
*Run MSYS2 shell (Command Prompt). C:2\msys2_shell.bat
 
*First update msys2 core components (if you have not done it yet):


* First update msys2 core components (if you have not done it yet):
<code>
<code>
pacman -Sy
pacman -Sy
</code>
<br>
<code>
pacman --needed -S bash pacman pacman-mirrors msys2-runtime
pacman --needed -S bash pacman pacman-mirrors msys2-runtime
</code>
</code>
<br>
You must exit out from MSYS2-shell, restart MSYS2-shell, then run below command, to complete rest of other components update:
You must exit out from MSYS2-shell, restart MSYS2-shell, then run below command, to complete rest of other components update:
<code>
<code>
Line 36: Line 42:
Note: for initial installation & setup, please also see [http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/]. Here -S means "sync".
Note: for initial installation & setup, please also see [http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/]. Here -S means "sync".


== Prepare MSYS2 for Qt related build development environment ==
==Prepare MSYS2 for Qt related build development environment==
 
*Start MSYS2-shell. Run/execute below commands to load MinGW-w64 SEH (64bit/x86_64) posix and Dwarf-2 (32bit/i686) posix toolchains & related other tools, dependencies & components from MSYS2 REPO ([https://github.com/Alexpux/MINGW-packages MINGW-packages], [https://github.com/Alexpux/MSYS2-packages MSYS2-packages]):


* Start MSYS2-shell. Run/execute below commands to load MinGW-w64 SEH (64bit/x86_64) posix and Dwarf-2 (32bit/i686) posix toolchains & related other tools, dependencies & components from MSYS2 REPO ([https://github.com/Alexpux/MINGW-packages MINGW-packages], [https://github.com/Alexpux/MSYS2-packages MSYS2-packages]):
<code>
<code>
pacman -S base-devel git mercurial cvs wget p7zip
pacman -S base-devel git mercurial cvs wget p7zip
</code>
<br>
<code>
pacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
pacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
</code>
</code>
<br>
Note: the i686(32bit) toolchain loads into /c/msys2/mingw32/bin (C:2\mingw32\bin) directory location, and, x86_64(64bit) toolchain loads into /c/msys2/mingw64/bin (C:2\mingw64\bin) directory. Perl, Ruby, Python, OpenSSL etc loads into /c/msys2/usr/bin (C:2\usr\bin) directory.
Note: the i686(32bit) toolchain loads into /c/msys2/mingw32/bin (C:2\mingw32\bin) directory location, and, x86_64(64bit) toolchain loads into /c/msys2/mingw64/bin (C:2\mingw64\bin) directory. Perl, Ruby, Python, OpenSSL etc loads into /c/msys2/usr/bin (C:2\usr\bin) directory.


* Build Qt : follow Qt building/compiling related articles  
*Build Qt : follow Qt building/compiling related articles  
** [[MinGW-64-bit]]
**[[MinGW-64-bit]]
** or [[Building Qt 5 from Git]], etc
**or [[Building Qt 5 from Git]], etc
** Qt can also be compiled/built, using the software-building scripts from MSYS2 based MinGW-w64 Packages Repo, for details see below "PKGBUILD" section.
**Qt can also be compiled/built, using the software-building scripts from MSYS2 based MinGW-w64 Packages Repo, for details see below "PKGBUILD" section.


== Obtain Pre-Built Qt & QtCreator binary files and Use instantly without Building/Compiling ==
==Obtain Pre-Built Qt & QtCreator binary files and Use instantly without Building/Compiling==


If you are going to build Qt using MinGW-w64 toolchains which are inside MSYS2, then you do need to do get pre-built Qt binary files, but choice is upto you.
If you are going to build Qt using MinGW-w64 toolchains which are inside MSYS2, then you do need to do get pre-built Qt binary files, but choice is upto you.


* Start MSYS2-shell. Run/execute below commands, to install/load, a pre-built dynamic/shared library environment edition of Qt & QtCreator binary files from MSYS2 REPO, for developing, testing, compiling/building or releasing opensource or closedsource software:
*Start MSYS2-shell. Run/execute below commands, to install/load, a pre-built dynamic/shared library environment edition of Qt & QtCreator binary files from MSYS2 REPO, for developing, testing, compiling/building or releasing opensource or closedsource software:
 
<code>
<code>
pacman -S mingw-w64-i686-qt-creator mingw-w64-x86_64-qt-creator
pacman -S mingw-w64-i686-qt-creator mingw-w64-x86_64-qt-creator
Line 64: Line 76:
Note: There is no static edition of QtCreator.
Note: There is no static edition of QtCreator.


== How to build using MSYS2's software-building scripts (PKGBUILD & patches) ==
==How to build using MSYS2's software-building scripts (PKGBUILD & patches)==
 
*run MSYS2-shell (C:2\msys2_shell.bat)
*create a folder to download build related scripts, then git clone software-building script REPO, from MSYS2's [https://github.com/Alexpux/MINGW-packages MINGW-packages] REPO (mirror)


* run MSYS2-shell (C:2\msys2_shell.bat)
* create a folder to download build related scripts, then git clone software-building script REPO, from MSYS2's [https://github.com/Alexpux/MINGW-packages MINGW-packages] REPO (mirror)
<code>
<code>
mkdir /c/msys2/repos
mkdir /c/msys2/repos
Line 73: Line 86:
git clone https://github.com/Alexpux/MINGW-packages.git
git clone https://github.com/Alexpux/MINGW-packages.git
</code>
</code>
* goto your choice of software-building script's sub-folder, which has a "PKGBUILD" file. For example, here we are showing how to build Qt5:
 
*goto your choice of software-building script's sub-folder, which has a "PKGBUILD" file. For example, here we are showing how to build Qt5:
 
<code>
<code>
cd ${package-name}
cd ${package-name}
</code>
</code>
For example, we want to build Qt5, so here our command will be: cd /c/msys2/repos/mingw-packages/mingw-w64-qt5
For example, we want to build Qt5, so here our command will be: cd /c/msys2/repos/mingw-packages/mingw-w64-qt5
* update it:
 
*update it:
 
<code>
<code>
updpkgsums
updpkgsums
</code>
</code>
* build it:
 
*build it:
 
<code>
<code>
makepkg-mingw -fsiL
makepkg-mingw -fsiL
</code>
</code>
* install built package. (make sure you are inside correct sub-directory, for our example, you need to be inside here /c/msys2/repos/mingw-packages/mingw-w64-qt5) (the -U is "upgrade")
 
*install built package. (make sure you are inside correct sub-directory, for our example, you need to be inside here /c/msys2/repos/mingw-packages/mingw-w64-qt5) (the -U is "upgrade")
 
<code>
<code>
pacman -U ${package-name}'''.pkg.tar.xz
pacman -U ${package-name}'''.pkg.tar.xz'''
</code>
</code>
So for our example, our install command will be: pacman -U'''.pkg.tar.xz
So for our example, our install command will be: pacman -U'''.pkg.tar.xz'''


== Building Qt from source ==
==Building Qt from source manually==


Follow the [[Building Qt 5 from Git|the usual instructions]]. Make sure to '''not''' use MSYS paths on the configure command line - use regular Windows paths (with forward slashes, if you want to avoid escaping backslashes).
Follow the [[Building Qt 5 from Git|the usual instructions]]. Make sure to '''not''' use MSYS paths on the configure command line - use regular Windows paths (with forward slashes, if you want to avoid escaping backslashes).

Latest revision as of 20:10, 16 December 2022

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

MSYS2 and MSYS2 (Minimal SYStem 2) is an independent rewrite of MSYS, a (command-line) shell for development usage, and based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 (from "MinGW-builds"), with the aim of better interoperability with native Windows software. It includes: MSYS2-shell and MinGW-w64 Win32 shell & MinGW-w64 Win64 shell. It supports & can work with both 32bit & 64bit multiple toolchains & targets, (for 64bit a 64bit operating system is needed). MSYS2 is a successor of MSYS and MinGW-builds. MSYS2-shell uses "pacman" for downloading packages from repo, and these are GPG signed & verified. Packages are by developer: lexx83 (Alexpux), mingwandroid, niXman. MSYS2 is a complete opensource development environment+shell solution+system. It can obtain related all toolchains & dependency packages from "MinGW-builds" and MSYS2 REPO, for compiling/building other software. It can also obtain various directly usable tools & language support & compilers, like: perl, python, ruby, openssl, etc.

A user has these options to choose from: by using MSYS2-shell & MinGW-w64 Win64 shell: (option-A), either download Qt or QtCreator source (from MSYS2 repo) and compile/build inside MSYS2, or (option-B), a user can get official Qt source or QtCreator source, and then compile/build using mingw-w64 toolchains obtained from MSYS2 repo, from the windows Cmd-shell, or (option-C), a user can get Qt or QtCreator software-building scripts from MSYS2's "MINGW-packages" repo, and compile/build using mingw-w64 toolchains obtained from MSYS2 repo, inside MSYS2-shell, or (option-D), a user can download pre-built binary files of Qt & QtCreator (dynamic/shared and/or static built editions) inside MSYS2, and run+use them instantly without compiling.

Obtain & Install

MSYS2, MSYS2. Use HTTPS based secure connection and obtain MSYS2. Run the installer binary. Install MSYS2 in C:drive in "msys2" folder.

Initial Setup of MSYS2

  • Run MSYS2 shell (Command Prompt). C:2\msys2_shell.bat
  • First update msys2 core components (if you have not done it yet):
pacman -Sy


pacman --needed -S bash pacman pacman-mirrors msys2-runtime


You must exit out from MSYS2-shell, restart MSYS2-shell, then run below command, to complete rest of other components update:

pacman -Su

Exit out of MSYS2-shell, restart MSYS2-shell, then you are ready to use MSYS2-shell. Note: for initial installation & setup, please also see [1]. Here -S means "sync".

Prepare MSYS2 for Qt related build development environment

  • Start MSYS2-shell. Run/execute below commands to load MinGW-w64 SEH (64bit/x86_64) posix and Dwarf-2 (32bit/i686) posix toolchains & related other tools, dependencies & components from MSYS2 REPO (MINGW-packages, MSYS2-packages):
pacman -S base-devel git mercurial cvs wget p7zip


pacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain


Note: the i686(32bit) toolchain loads into /c/msys2/mingw32/bin (C:2\mingw32\bin) directory location, and, x86_64(64bit) toolchain loads into /c/msys2/mingw64/bin (C:2\mingw64\bin) directory. Perl, Ruby, Python, OpenSSL etc loads into /c/msys2/usr/bin (C:2\usr\bin) directory.

  • Build Qt : follow Qt building/compiling related articles
    • MinGW-64-bit
    • or Building Qt 5 from Git, etc
    • Qt can also be compiled/built, using the software-building scripts from MSYS2 based MinGW-w64 Packages Repo, for details see below "PKGBUILD" section.

Obtain Pre-Built Qt & QtCreator binary files and Use instantly without Building/Compiling

If you are going to build Qt using MinGW-w64 toolchains which are inside MSYS2, then you do need to do get pre-built Qt binary files, but choice is upto you.

  • Start MSYS2-shell. Run/execute below commands, to install/load, a pre-built dynamic/shared library environment edition of Qt & QtCreator binary files from MSYS2 REPO, for developing, testing, compiling/building or releasing opensource or closedsource software:
pacman -S mingw-w64-i686-qt-creator mingw-w64-x86_64-qt-creator

If you also want to install/load, a pre-built static library environment edition of Qt binary files, for compiling & releasing opensource projects, (with almost one/single file based standalone or portable binary executable file), then run/execute below command:

pacman -S mingw-w64-i686-qt5-static mingw-w64-x86_64-qt5-static

Note: There is no static edition of QtCreator.

How to build using MSYS2's software-building scripts (PKGBUILD & patches)

  • run MSYS2-shell (C:2\msys2_shell.bat)
  • create a folder to download build related scripts, then git clone software-building script REPO, from MSYS2's MINGW-packages REPO (mirror)
mkdir /c/msys2/repos
cd /c/msys2/repos
git clone https://github.com/Alexpux/MINGW-packages.git
  • goto your choice of software-building script's sub-folder, which has a "PKGBUILD" file. For example, here we are showing how to build Qt5:
cd ${package-name}

For example, we want to build Qt5, so here our command will be: cd /c/msys2/repos/mingw-packages/mingw-w64-qt5

  • update it:
updpkgsums
  • build it:
makepkg-mingw -fsiL
  • install built package. (make sure you are inside correct sub-directory, for our example, you need to be inside here /c/msys2/repos/mingw-packages/mingw-w64-qt5) (the -U is "upgrade")
pacman -U ${package-name}'''.pkg.tar.xz'''

So for our example, our install command will be: pacman -U.pkg.tar.xz

Building Qt from source manually

Follow the the usual instructions. Make sure to not use MSYS paths on the configure command line - use regular Windows paths (with forward slashes, if you want to avoid escaping backslashes).