diff options
author | Alessandro Portale <[email protected]> | 2021-03-23 18:33:42 +0100 |
---|---|---|
committer | Alessandro Portale <[email protected]> | 2021-03-23 18:23:43 +0000 |
commit | 460d446c6148fc0dd3b5232d1d4c49a19456e089 (patch) | |
tree | fc9d781253eff56da25c5e52d225c40cdead78ab | |
parent | 9b3de8dd70444fc5a742ab6926ed38064c944224 (diff) |
CMakeProjectManager: Set CMAKE_TOOLCHAIN_FILE for WebAssemblyv4.15.0-beta2
Like for Android and iOS, CMake also needs a CMAKE_TOOLCHAIN_FILE when
configuring a WebAssembly project. We pass it "qt.toolchain.cmake",
which is part of Qt6, just like we do for iOS.
Fixes: QTCREATORBUG-25519
Change-Id: Ia02cafc163da6cd94c483e860922b08a35284c71
Reviewed-by: Cristian Adam <[email protected]>
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 6fea18910e8..4632ca14b79 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -38,6 +38,7 @@ #include <android/androidconstants.h> #include <ios/iosconstants.h> +#include <webassembly/webassemblyconstants.h> #include <coreplugin/find/itemviewfind.h> #include <coreplugin/icore.h> @@ -96,6 +97,8 @@ static Q_LOGGING_CATEGORY(cmakeBuildConfigurationLog, "qtc.cmake.bc", QtWarningM const char CONFIGURATION_KEY[] = "CMake.Configuration"; const char DEVELOPMENT_TEAM_FLAG[] = "Ios:DevelopmentTeam:Flag"; const char PROVISIONING_PROFILE_FLAG[] = "Ios:ProvisioningProfile:Flag"; +const char CMAKE_QT6_TOOLCHAIN_FILE_ARG[] = + "-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake"; namespace Internal { @@ -793,6 +796,11 @@ static bool isIos(const Kit *k) || deviceType == Ios::Constants::IOS_SIMULATOR_TYPE; } +static bool isWebAssembly(const Kit *k) +{ + return DeviceTypeKitAspect::deviceTypeId(k) == WebAssembly::Constants::WEBASSEMBLY_DEVICE_TYPE; +} + static QStringList defaultInitialCMakeArguments(const Kit *k, const QString buildType) { // Generator: @@ -958,8 +966,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) const QString sysroot = deviceType == Ios::Constants::IOS_DEVICE_TYPE ? QLatin1String("iphoneos") : QLatin1String("iphonesimulator"); - initialArgs.append("-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/" - "Qt6/qt.toolchain.cmake"); + initialArgs.append(CMAKE_QT6_TOOLCHAIN_FILE_ARG); initialArgs.append("-DCMAKE_OSX_ARCHITECTURES:STRING=" + architecture); initialArgs.append("-DCMAKE_OSX_SYSROOT:STRING=" + sysroot); initialArgs.append("%{" + QLatin1String(DEVELOPMENT_TEAM_FLAG) + "}"); @@ -967,6 +974,12 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) } } + if (isWebAssembly(k)) { + const QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(k); + if (qt && qt->qtVersion().majorVersion >= 6) + initialArgs.append(CMAKE_QT6_TOOLCHAIN_FILE_ARG); + } + if (info.buildDirectory.isEmpty()) { setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(), k, |