forked from qt-creator/qt-creator
CMakeProjectManager: Set CMAKE_TOOLCHAIN_FILE for WebAssembly
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 <cristian.adam@qt.io>
This commit is contained in:
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#include <android/androidconstants.h>
|
#include <android/androidconstants.h>
|
||||||
#include <ios/iosconstants.h>
|
#include <ios/iosconstants.h>
|
||||||
|
#include <webassembly/webassemblyconstants.h>
|
||||||
|
|
||||||
#include <coreplugin/find/itemviewfind.h>
|
#include <coreplugin/find/itemviewfind.h>
|
||||||
#include <coreplugin/icore.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 CONFIGURATION_KEY[] = "CMake.Configuration";
|
||||||
const char DEVELOPMENT_TEAM_FLAG[] = "Ios:DevelopmentTeam:Flag";
|
const char DEVELOPMENT_TEAM_FLAG[] = "Ios:DevelopmentTeam:Flag";
|
||||||
const char PROVISIONING_PROFILE_FLAG[] = "Ios:ProvisioningProfile: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 {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -793,6 +796,11 @@ static bool isIos(const Kit *k)
|
|||||||
|| deviceType == Ios::Constants::IOS_SIMULATOR_TYPE;
|
|| 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)
|
static QStringList defaultInitialCMakeArguments(const Kit *k, const QString buildType)
|
||||||
{
|
{
|
||||||
// Generator:
|
// Generator:
|
||||||
@@ -958,8 +966,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
|||||||
const QString sysroot = deviceType == Ios::Constants::IOS_DEVICE_TYPE
|
const QString sysroot = deviceType == Ios::Constants::IOS_DEVICE_TYPE
|
||||||
? QLatin1String("iphoneos")
|
? QLatin1String("iphoneos")
|
||||||
: QLatin1String("iphonesimulator");
|
: QLatin1String("iphonesimulator");
|
||||||
initialArgs.append("-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/"
|
initialArgs.append(CMAKE_QT6_TOOLCHAIN_FILE_ARG);
|
||||||
"Qt6/qt.toolchain.cmake");
|
|
||||||
initialArgs.append("-DCMAKE_OSX_ARCHITECTURES:STRING=" + architecture);
|
initialArgs.append("-DCMAKE_OSX_ARCHITECTURES:STRING=" + architecture);
|
||||||
initialArgs.append("-DCMAKE_OSX_SYSROOT:STRING=" + sysroot);
|
initialArgs.append("-DCMAKE_OSX_SYSROOT:STRING=" + sysroot);
|
||||||
initialArgs.append("%{" + QLatin1String(DEVELOPMENT_TEAM_FLAG) + "}");
|
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()) {
|
if (info.buildDirectory.isEmpty()) {
|
||||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
k,
|
k,
|
||||||
|
Reference in New Issue
Block a user