Stage 'windeployqt'.
This commit is contained in:
parent
b26094969d
commit
971869c346
|
@ -1,4 +1,5 @@
|
||||||
import qbs.FileInfo
|
import qbs.FileInfo
|
||||||
|
import qbs.Utilities
|
||||||
|
|
||||||
CppApplication {
|
CppApplication {
|
||||||
Depends { name: "buildconfig" }
|
Depends { name: "buildconfig" }
|
||||||
|
@ -24,13 +25,13 @@ CppApplication {
|
||||||
}
|
}
|
||||||
|
|
||||||
Properties {
|
Properties {
|
||||||
condition: Qt.core.versionMajor >= 5 && Qt.core.versionMinor < 12
|
condition: Qt.core.versionMajor >= 5 && Qt.core.versionMinor < 12
|
||||||
cpp.cxxLanguageVersion: "c++11"
|
cpp.cxxLanguageVersion: "c++11"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since Qt 5.12 available support for C++17
|
// Since Qt 5.12 available support for C++17
|
||||||
Properties {
|
Properties {
|
||||||
condition: Qt.core.versionMajor >= 5 && Qt.core.versionMinor >= 12
|
condition: Qt.core.versionMajor >= 5 && Qt.core.versionMinor >= 12
|
||||||
cpp.cxxLanguageVersion: "c++17"
|
cpp.cxxLanguageVersion: "c++17"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +50,12 @@ CppApplication {
|
||||||
prefix: project.sourceDirectory + "/dist/win/"
|
prefix: project.sourceDirectory + "/dist/win/"
|
||||||
files: {
|
files: {
|
||||||
var files = [];
|
var files = [];
|
||||||
|
|
||||||
|
if (qbs.toolchainType.contains("mingw"))
|
||||||
|
files.push("msvcr120.dll");
|
||||||
|
|
||||||
// Minimal supported OpenSSL version since Qt 5.12.4 is 1.1.1.
|
// Minimal supported OpenSSL version since Qt 5.12.4 is 1.1.1.
|
||||||
if (Qt.core.versionMajor >= 5 && Qt.core.versionMinor >= 12 && Qt.core.versionPatch >= 4) {
|
if (Utilities.versionCompare(Qt.core.version, "5.12.4") >= 0) {
|
||||||
if (qbs.architecture.contains("x86_64")) {
|
if (qbs.architecture.contains("x86_64")) {
|
||||||
files.push(
|
files.push(
|
||||||
"openssl/win64/libcrypto-1_1-x64.dll",
|
"openssl/win64/libcrypto-1_1-x64.dll",
|
||||||
|
@ -63,7 +68,6 @@ CppApplication {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
files.push("msvcr120.dll");
|
|
||||||
if (qbs.architecture.contains("x86_64")) {
|
if (qbs.architecture.contains("x86_64")) {
|
||||||
files.push(
|
files.push(
|
||||||
"openssl/win64/libeay32.dll",
|
"openssl/win64/libeay32.dll",
|
||||||
|
|
13
qbs/imports/VDynamicLib.qbs
Normal file
13
qbs/imports/VDynamicLib.qbs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
VLib {
|
||||||
|
Depends { name: "windeployqt"; }
|
||||||
|
Depends { name: "i18nconfig"; }
|
||||||
|
|
||||||
|
buildconfig.staticBuild: false
|
||||||
|
|
||||||
|
windeployqt.noVirtualkeyboard: true
|
||||||
|
|
||||||
|
Properties {
|
||||||
|
condition: i18nconfig.limitDeploymentOfQtTranslations
|
||||||
|
windeployqt.languages: i18nconfig.qtTranslationLocales.join(',')
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ import qbs.FileInfo
|
||||||
VApp {
|
VApp {
|
||||||
Depends { name: "freedesktop2" }
|
Depends { name: "freedesktop2" }
|
||||||
Depends { name: "tenv" }
|
Depends { name: "tenv" }
|
||||||
|
Depends { name: "windeployqt"; }
|
||||||
Depends { name: "i18nconfig"; }
|
Depends { name: "i18nconfig"; }
|
||||||
|
|
||||||
version: "0.7.52"
|
version: "0.7.52"
|
||||||
|
@ -62,4 +63,11 @@ VApp {
|
||||||
return files;
|
return files;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
windeployqt.noVirtualkeyboard: true
|
||||||
|
|
||||||
|
Properties {
|
||||||
|
condition: i18nconfig.limitDeploymentOfQtTranslations
|
||||||
|
windeployqt.languages: i18nconfig.qtTranslationLocales.join(',')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
183
qbs/modules/windeployqt/windeployqt.qbs
Normal file
183
qbs/modules/windeployqt/windeployqt.qbs
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
import qbs.File
|
||||||
|
import qbs.FileInfo
|
||||||
|
import qbs.Environment
|
||||||
|
import qbs.Utilities
|
||||||
|
import qbs.ModUtils
|
||||||
|
|
||||||
|
/**
|
||||||
|
This module uses _windeployqt_ program to collect Qt runtime for Windows deployment.
|
||||||
|
*/
|
||||||
|
Module {
|
||||||
|
additionalProductTypes: ["windeployqt"]
|
||||||
|
|
||||||
|
property bool artifacts: true
|
||||||
|
|
||||||
|
property bool json: false
|
||||||
|
|
||||||
|
property string windeployqtArtifact: artifacts ? (json ? "windeployqt.json" : "windeployqt.txt")
|
||||||
|
: undefined
|
||||||
|
|
||||||
|
property string windeployqtProgram: "windeployqt.exe"
|
||||||
|
|
||||||
|
property string qmake: undefined
|
||||||
|
|
||||||
|
/**
|
||||||
|
Defines where collected files are being copied. This can be useful to distinguish Qt runtime from project artifacts. Uses
|
||||||
|
location of the binary if undefined.
|
||||||
|
*/
|
||||||
|
property string dir: undefined
|
||||||
|
|
||||||
|
property string libdir: undefined
|
||||||
|
|
||||||
|
property string plugindir: product.windeployqt.dir !== undefined ? product.windeployqt.dir + "/plugins"
|
||||||
|
: undefined
|
||||||
|
|
||||||
|
property bool debug: false
|
||||||
|
|
||||||
|
property bool release: false
|
||||||
|
|
||||||
|
property bool pdb: false
|
||||||
|
|
||||||
|
property bool force: false
|
||||||
|
|
||||||
|
property bool dryRun: false
|
||||||
|
|
||||||
|
property bool noPatchqt: false
|
||||||
|
|
||||||
|
property bool ignoreLibraryErrors: false
|
||||||
|
|
||||||
|
property bool noPlugins: false
|
||||||
|
|
||||||
|
property bool noLibraries: false
|
||||||
|
|
||||||
|
property string languages: undefined
|
||||||
|
|
||||||
|
property bool noTranslations: false
|
||||||
|
|
||||||
|
property bool noSystemD3dCompiler: false
|
||||||
|
|
||||||
|
property bool compilerRuntime: false
|
||||||
|
|
||||||
|
property bool noVirtualkeyboard: false
|
||||||
|
|
||||||
|
property bool noCompilerRuntime: false
|
||||||
|
|
||||||
|
property bool noOpenglSw: false
|
||||||
|
|
||||||
|
property string list: undefined
|
||||||
|
|
||||||
|
property int verbose: undefined
|
||||||
|
|
||||||
|
Depends { name: "Qt.core" }
|
||||||
|
|
||||||
|
Rule {
|
||||||
|
// alwaysRun: true
|
||||||
|
condition: product.qbs.targetOS.contains("windows")
|
||||||
|
inputs: product.type.contains("dynamiclibrary") ? ["dynamiclibrary"] : ["application"]
|
||||||
|
|
||||||
|
prepare: {
|
||||||
|
var windeployqtProgram = product.windeployqt.windeployqtProgram;
|
||||||
|
|
||||||
|
// Checking if directory exists as a dirty workaround to check if `--no-install` options has been set from command line.
|
||||||
|
|
||||||
|
if (!File.exists(product.qbs.installRoot)) {
|
||||||
|
var cmd = new JavaScriptCommand();
|
||||||
|
cmd.windeployqtProgram = windeployqtProgram;
|
||||||
|
cmd.description = "can not invoke '" + windeployqtProgram + "' when '--no-install` options has been set from command line";
|
||||||
|
cmd.sourceCode = function () {
|
||||||
|
console.warn("Can not invoke '" + windeployqtProgram + "' when '--no-install` options has been set from command line (tip: remove your build directory entirely after unchecking '--no-install' option)");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var cmdArgs = []
|
||||||
|
|
||||||
|
if (Utilities.versionCompare(product.Qt.core.version, "6") >= 0) {
|
||||||
|
if (product.windeployqt.qmake !== undefined)
|
||||||
|
cmdArgs.push("--qmake", product.windeployqt.qmake)
|
||||||
|
|
||||||
|
if (product.windeployqt.ignoreLibraryErrors)
|
||||||
|
cmdArgs.push("--ignore-library-errors")
|
||||||
|
|
||||||
|
if (!product.windeployqt.noTranslations && product.windeployqt.languages !== undefined)
|
||||||
|
cmdArgs.push("--translations", product.windeployqt.languages)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (product.windeployqt.dir !== undefined)
|
||||||
|
cmdArgs.push("--dir", product.windeployqt.dir)
|
||||||
|
|
||||||
|
if (product.windeployqt.noLibraries)
|
||||||
|
cmdArgs.push("--no-libraries")
|
||||||
|
else if (product.windeployqt.libdir !== undefined)
|
||||||
|
cmdArgs.push("--libdir", product.windeployqt.libdir)
|
||||||
|
|
||||||
|
if (product.windeployqt.noPlugins)
|
||||||
|
cmdArgs.push("--no-plugins")
|
||||||
|
else if (product.windeployqt.plugindir !== undefined)
|
||||||
|
cmdArgs.push("--plugindir", product.windeployqt.plugindir)
|
||||||
|
|
||||||
|
if (product.windeployqt.debug)
|
||||||
|
cmdArgs.push("--debug")
|
||||||
|
|
||||||
|
if (product.windeployqt.release)
|
||||||
|
cmdArgs.push("--release")
|
||||||
|
|
||||||
|
if (product.windeployqt.pdb && product.qbs.toolchain.contains("msvc"))
|
||||||
|
cmdArgs.push("--pdb")
|
||||||
|
|
||||||
|
if (product.windeployqt.force)
|
||||||
|
cmdArgs.push("--force")
|
||||||
|
|
||||||
|
if (product.windeployqt.dryRun)
|
||||||
|
cmdArgs.push("--dry-run")
|
||||||
|
|
||||||
|
if (product.windeployqt.noPatchqt)
|
||||||
|
cmdArgs.push("--no-patchqt")
|
||||||
|
|
||||||
|
if (product.windeployqt.noTranslations)
|
||||||
|
cmdArgs.push("--no-translations")
|
||||||
|
|
||||||
|
if (product.windeployqt.noSystemD3dCompiler)
|
||||||
|
cmdArgs.push("--no-system-d3d-compiler")
|
||||||
|
|
||||||
|
if (product.windeployqt.compilerRuntime)
|
||||||
|
cmdArgs.push("--compiler-runtime")
|
||||||
|
else if (product.windeployqt.noCompilerRuntime)
|
||||||
|
cmdArgs.push("--no-compiler-runtime")
|
||||||
|
|
||||||
|
if (product.windeployqt.noVirtualkeyboard)
|
||||||
|
cmdArgs.push("--no-virtualkeyboard")
|
||||||
|
|
||||||
|
if (product.windeployqt.json)
|
||||||
|
cmdArgs.push("--json")
|
||||||
|
|
||||||
|
if (product.windeployqt.noOpenglSw)
|
||||||
|
cmdArgs.push("--no-opengl-sw")
|
||||||
|
|
||||||
|
if (product.windeployqt.list !== undefined)
|
||||||
|
cmdArgs.push("--list", product.windeployqt.list)
|
||||||
|
|
||||||
|
if (product.windeployqt.verbose !== undefined)
|
||||||
|
cmdArgs.push("--verbose", product.windeployqt.verbose)
|
||||||
|
|
||||||
|
cmdArgs.push(product.installDir + "/" + input.fileName);
|
||||||
|
|
||||||
|
var cmd = new Command(product.Qt.core.binPath + "/" + windeployqtProgram, cmdArgs);
|
||||||
|
cmd.jobPool = "windeployqt";
|
||||||
|
cmd.description = "invoking '" + windeployqtProgram;
|
||||||
|
cmd.stdoutFilePath = product.buildDirectory + "/" + product.windeployqt.windeployqtArtifact;
|
||||||
|
}
|
||||||
|
cmd.workingDirectory = product.qbs.installRoot;
|
||||||
|
cmd.highlight = "filegen";
|
||||||
|
return [cmd]
|
||||||
|
}
|
||||||
|
|
||||||
|
Artifact {
|
||||||
|
filePath: product.buildDirectory + "/" + product.windeployqt.windeployqtArtifact
|
||||||
|
fileTags: ["windeployqt", "windeployqt.json", "json"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JobLimit {
|
||||||
|
jobPool: "windeployqt"
|
||||||
|
jobCount: 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -267,4 +267,15 @@ VToolApp {
|
||||||
prefix: product.sourceDirectory + "/share/resources/"
|
prefix: product.sourceDirectory + "/share/resources/"
|
||||||
files: "puzzle.rc"
|
files: "puzzle.rc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Group {
|
||||||
|
name: "win deploy"
|
||||||
|
condition: qbs.targetOS.contains("windows")
|
||||||
|
prefix: project.sourceDirectory + "/dist/win/"
|
||||||
|
files: [
|
||||||
|
"layout.ico",
|
||||||
|
]
|
||||||
|
qbs.install: true
|
||||||
|
qbs.installDir: buildconfig.installAppPath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,4 +211,16 @@ VToolApp {
|
||||||
prefix: product.sourceDirectory + "/share/resources/"
|
prefix: product.sourceDirectory + "/share/resources/"
|
||||||
files: "tape.rc"
|
files: "tape.rc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Group {
|
||||||
|
name: "win deploy"
|
||||||
|
condition: qbs.targetOS.contains("windows")
|
||||||
|
prefix: project.sourceDirectory + "/dist/win/"
|
||||||
|
files: [
|
||||||
|
"i-measurements.ico",
|
||||||
|
"s-measurements.ico",
|
||||||
|
]
|
||||||
|
qbs.install: true
|
||||||
|
qbs.installDir: buildconfig.installAppPath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,6 +286,24 @@ VToolApp {
|
||||||
fileTags: "freedesktop.512x512MimetypesIcons"
|
fileTags: "freedesktop.512x512MimetypesIcons"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Group {
|
||||||
|
name: "win deploy"
|
||||||
|
condition: qbs.targetOS.contains("windows")
|
||||||
|
prefix: project.sourceDirectory + "/"
|
||||||
|
files: [
|
||||||
|
"dist/win/valentina.ico",
|
||||||
|
"dist/win/pattern.ico",
|
||||||
|
"dist/win/EUDC.TTE",
|
||||||
|
"AUTHORS.txt",
|
||||||
|
"LICENSE_GPL.txt",
|
||||||
|
"README.txt",
|
||||||
|
"ChangeLog.txt",
|
||||||
|
"share/qtlogging.ini"
|
||||||
|
]
|
||||||
|
qbs.install: true
|
||||||
|
qbs.installDir: buildconfig.installAppPath
|
||||||
|
}
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
fileTagsFilter: "qm"
|
fileTagsFilter: "qm"
|
||||||
qbs.install: true
|
qbs.install: true
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
VLib {
|
VDynamicLib {
|
||||||
name: "QMUParserLib"
|
name: "QMUParserLib"
|
||||||
version: "2.7.0"
|
version: "2.7.0"
|
||||||
files: [
|
files: [
|
||||||
|
@ -34,10 +34,19 @@ VLib {
|
||||||
|
|
||||||
cpp.defines: ["QMUPARSER_LIBRARY", 'QMUP_VERSION="' + product.version + '"']
|
cpp.defines: ["QMUPARSER_LIBRARY", 'QMUP_VERSION="' + product.version + '"']
|
||||||
|
|
||||||
buildconfig.staticBuild: false
|
|
||||||
|
|
||||||
Export {
|
Export {
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
cpp.includePaths: [exportingProduct.sourceDirectory]
|
cpp.includePaths: [exportingProduct.sourceDirectory]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Group {
|
||||||
|
name: "win deploy"
|
||||||
|
condition: qbs.targetOS.contains("windows")
|
||||||
|
prefix: product.sourceDirectory + "/"
|
||||||
|
files: [
|
||||||
|
"LICENSE_BSD.txt"
|
||||||
|
]
|
||||||
|
qbs.install: true
|
||||||
|
qbs.installDir: buildconfig.installAppPath
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
VLib {
|
VDynamicLib {
|
||||||
Depends { name: "Qt"; submodules: ["gui", "widgets"] }
|
Depends { name: "Qt"; submodules: ["gui", "widgets"] }
|
||||||
Depends { name: "VMiscLib" }
|
Depends { name: "VMiscLib" }
|
||||||
|
|
||||||
|
@ -41,8 +41,6 @@ VLib {
|
||||||
"checkablemessagebox.h",
|
"checkablemessagebox.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
buildconfig.staticBuild: false
|
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
name: "plugins"
|
name: "plugins"
|
||||||
prefix: "plugins/"
|
prefix: "plugins/"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user