Created
June 17, 2022 10:45
-
-
Save cristianadam/585858c5933778bdf43013861b78a3ce to your computer and use it in GitHub Desktop.
Script used to compile QtBase 6.3.0 statically for Windows Arm64. First run cmake -P qtbase-6.3.0-win-msvc.cmake in a x86_64 console, then in a arm64 one.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
# file Copyright.txt or https://cmake.org/licensing for details. | |
# Run this script on a Windows host to generate Qt binaries. | |
# Set the PATH environment variable to contain the locations of cmake and git. | |
if ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x64") | |
set(arch "x86_64") | |
elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "x86") | |
set(arch "i386") | |
elseif ("$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64") | |
set(arch "arm64") | |
else() | |
message("VSCMD_ARG_TGT_ARCH env var not recognized. Run this from a Visual Studio Command Prompt.") | |
return() | |
endif() | |
if (NOT "x$ENV{VCToolsVersion}" STREQUAL "x") | |
set(toolset "msvc_v$ENV{VCToolsVersion}") | |
else() | |
message( "VCToolsVersion env var not set. Run this from a Visual Studio Command Prompt.") | |
return() | |
endif() | |
set(srcname "qtbase-everywhere-src-6.3.0") | |
set(pkgname "qt-6.3.0-win-${arch}-${toolset}") | |
set(pkgname_host "qt-6.3.0-win-x86_64-${toolset}") | |
set(topdir "${CMAKE_CURRENT_LIST_DIR}") | |
set(srcdir "${topdir}/${srcname}") | |
set(blddir "${topdir}/${pkgname}-build") | |
set(prefix "${topdir}/${pkgname}") | |
set(prefix_host "${topdir}/${pkgname_host}") | |
# Qt Source | |
if (NOT EXISTS "${srcdir}") | |
file(DOWNLOAD "https://download.qt.io/official_releases/qt/6.3/6.3.0/submodules/qtbase-everywhere-src-6.3.0.tar.xz" qt.tar.xz | |
EXPECTED_HASH SHA256=b865aae43357f792b3b0a162899d9bf6a1393a55c4e5e4ede5316b157b1a0f99) | |
file(ARCHIVE_EXTRACT INPUT qt.tar.xz) | |
file(REMOVE qt.tar.xz) | |
endif() | |
# Download and use LLVM's clang-cl to compiler for arm64 | |
if (${arch} STREQUAL "arm64" AND CMAKE_ARGV3 STREQUAL "clang-cl") | |
set(ENV{PATH} "c:/Program Files/LLVM/bin;$ENV{PATH}") | |
set(ENV{CC} "clang-cl --target=arm64-pc-windows-msvc") | |
set(ENV{CXX} "clang-cl --target=arm64-pc-windows-msvc") | |
endif() | |
# Build Qt | |
if (NOT EXISTS "${blddir}") | |
file(MAKE_DIRECTORY "${blddir}") | |
if ("${arch}" STREQUAL "arm64") | |
set(qt_platform "win32-arm64-msvc") | |
set(qt_host_path -qt-host-path "${prefix_host}") | |
else() | |
set(qt_platform "win32-msvc") | |
unset(qt_host_path) | |
endif() | |
execute_process( | |
WORKING_DIRECTORY "${blddir}" | |
COMMAND | |
${srcdir}/configure.bat | |
-prefix ${prefix} | |
-static | |
-static-runtime | |
-release | |
-opensource -confirm-license | |
-platform ${qt_platform} | |
${qt_host_path} | |
-gui | |
-widgets | |
-qt-doubleconversion | |
-qt-freetype | |
-qt-harfbuzz | |
-qt-pcre | |
-qt-zlib | |
-qt-libpng | |
-qt-libjpeg | |
-no-gif | |
-no-icu | |
-no-pch | |
-no-opengl | |
-no-dbus | |
-no-accessibility | |
-no-feature-androiddeployqt | |
-no-feature-printsupport | |
-no-feature-sql | |
-nomake examples | |
-nomake tests | |
) | |
execute_process( | |
WORKING_DIRECTORY "${blddir}" | |
COMMAND ninja | |
) | |
endif() | |
# Install Qt | |
if (NOT EXISTS "${prefix}") | |
execute_process( | |
WORKING_DIRECTORY "${blddir}" | |
COMMAND ninja install | |
) | |
endif() | |
# Package Qt | |
file(ARCHIVE_CREATE OUTPUT "${pkgname}.zip" PATHS "${pkgname}" FORMAT "zip") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment