From fc24b2b7da7d8787b7464db8c16226cfccb45182 Mon Sep 17 00:00:00 2001 From: Alexis Jeandet Date: Tue, 14 Jan 2025 18:47:24 +0100 Subject: [PATCH] MesonProjectManager: forward Python executable and some CMake info This is more consistent use the Python executable set in the Kit. Meson has some CMake support for subprojects/dependencies, forwarding the compilers and Qt install PATH makes sense too. There is one big limitation with Meson, it doesn't support projects using AUTOMOC so far. Change-Id: Ie569d3f98f7a9d0ff8564c96916b49b9ac7cbfbd Reviewed-by: hjk --- src/plugins/mesonprojectmanager/kitdata.h | 2 ++ src/plugins/mesonprojectmanager/mesonbuildsystem.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/plugins/mesonprojectmanager/kitdata.h b/src/plugins/mesonprojectmanager/kitdata.h index e3bd13ed7f3..f4693ba826a 100644 --- a/src/plugins/mesonprojectmanager/kitdata.h +++ b/src/plugins/mesonprojectmanager/kitdata.h @@ -14,7 +14,9 @@ struct KitData QString cCompilerPath; QString cxxCompilerPath; QString cmakePath; + QString pythonPath; QString qmakePath; + QString qtPrefixPath; QString qtVersionStr; Utils::QtMajorVersion qtVersion; }; diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp index 303c37e481b..27a172f7109 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp @@ -65,7 +65,9 @@ static KitData createKitData(const Kit *kit) data.cxxCompilerPath = expander->expand(QString("%{Compiler:Executable:Cxx}")); data.cmakePath = expander->expand(QString("%{CMake:Executable:FilePath}")); data.qmakePath = expander->expand(QString("%{Qt:qmakeExecutable}")); + data.qtPrefixPath = expander->expand(QString("%{Qt:QT_INSTALL_PREFIX}")); data.qtVersionStr = expander->expand(QString("%{Qt:Version}")); + data.pythonPath = expander->expand(QString("%{Python:Path}")); data.qtVersion = Utils::QtMajorVersion::None; auto version = QVersionNumber::fromString(data.qtVersionStr); if (!version.isNull()) { @@ -140,6 +142,10 @@ void MachineFileManager::addMachineFile(const Kit *kit) ba += entry("c", kitData.cCompilerPath); ba += entry("cpp", kitData.cxxCompilerPath); ba += entry("qmake", kitData.qmakePath); + if (!kitData.pythonPath.isEmpty()){ + ba += entry("python3", kitData.pythonPath); + ba += entry("python", kitData.pythonPath); + } if (kitData.qtVersion == QtMajorVersion::Qt4) ba += entry("qmake-qt4", kitData.qmakePath); else if (kitData.qtVersion == QtMajorVersion::Qt5) @@ -147,6 +153,10 @@ void MachineFileManager::addMachineFile(const Kit *kit) else if (kitData.qtVersion == QtMajorVersion::Qt6) ba += entry("qmake-qt6", kitData.qmakePath); ba += entry("cmake", kitData.cmakePath); + ba += "\n[cmake]\n"; + ba += entry("CMAKE_C_COMPILER", kitData.cCompilerPath); + ba += entry("CMAKE_CXX_COMPILER", kitData.cxxCompilerPath); + ba += entry("CMAKE_PREFIX_PATH", kitData.qtPrefixPath); filePath.writeFileContents(ba); }