import qbs.FileInfo import qbs.Utilities CppApplication { Depends { name: "buildconfig" } Depends { name: "bundle"; condition: qbs.targetOS.contains("macos") } Depends { name: "macdeployqt"; condition: qbs.targetOS.contains("macos") } Properties { condition: qbs.targetOS.contains("macos") cpp.minimumMacosVersion: buildconfig.minimumMacosVersion codesign.enableCodeSigning: buildconfig.enableCodeSigning } Properties { condition: qbs.targetOS.contains("macos") && qbs.buildVariant !== "release" codesign.codesignFlags: ["--deep"] codesign.signingType: "ad-hoc" } Properties { condition: qbs.targetOS.contains("macos") && qbs.buildVariant === "release" codesign.signingType: "apple-id" macdeployqt.signingIdentity: buildconfig.signingIdentity macdeployqt.signForNotarization: true } Properties { condition: buildconfig.enableRPath cpp.rpaths: FileInfo.joinPaths(cpp.rpathOrigin, "..", qbs.targetOS.contains("macos") ? "Frameworks" : buildconfig.installLibraryPath) } Properties { condition: qbs.targetOS.contains("unix") && buildconfig.buildWithCcache cpp.compilerWrapper: "ccache" } cpp.cxxLanguageVersion: { if (Qt.core.versionMajor >= 6) // Start building with C++20 since Qt 6.0 return "c++20"; else if(Qt.core.versionMajor >= 5 && Qt.core.versionMinor >= 12) // Since Qt 5.12 available support for C++17 return "c++17"; return "c++11"; } Properties { condition: qbs.targetOS.contains("windows") && qbs.toolchain.contains("gcc") && !qbs.toolchain.contains("clang") cpp.minimumWindowsVersion: { if (Qt.core.versionMajor >= 6) return "6.02"; // should be 10.0 if (Qt.core.versionMajor >= 5 && Qt.core.versionMinor >= 7) return "6.00"; return "5.01"; } } Group { // See question on StackOwerflow "QSslSocket error when SSL is NOT used" (http://stackoverflow.com/a/31277055/3045403) // Copy of answer: // We occasionally had customers getting very similar warning messages but the software was also crashing. // We determined it was because, although we weren't using SSL either, the program found a copy of OpenSSL on the // customer's computer and tried interfacing with it. The version it found was too old though (from Qt 5.2 onwards v1.0.0 // or later is required). // // Our solution was to distribute the OpenSSL DLLs along with our application (~1.65 MB). The alternative is to compile // Qt from scratch without OpenSSL support. condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) name: "openssl" prefix: project.sourceDirectory + "/dist/win/" 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. if (Utilities.versionCompare(Qt.core.version, "5.12.4") >= 0) { if (qbs.architecture.contains("x86_64")) { files.push( "openssl/win64/libcrypto-1_1-x64.dll", "openssl/win64/libssl-1_1-x64.dll" ); } else { files.push( "openssl/win32/libcrypto-1_1.dll", "openssl/win32/libssl-1_1.dll" ); } } else { if (qbs.architecture.contains("x86_64")) { files.push( "openssl/win64/libeay32.dll", "openssl/win64/ssleay32.dll" ); } else { files.push( "openssl/win32/libeay32.dll", "openssl/win32/ssleay32.dll" ); } } return files; } qbs.install: true qbs.installDir: buildconfig.installBinaryPath } Group { name: "Precompiled headers" condition: buildconfig.enablePCH prefix: product.sourceDirectory + "/" files: { var files = ["stable.h"]; // if (qbs.toolchain.contains("msvc")) // files.push("stable.cpp") return files; } fileTags: ["cpp_pch_src"] } }