macOS: Fix importing command line builds with CMake

When configuring a CMake project on the command line, CMake will
(correctly) find and use the compiler from the current developer
directory, usually somewhere in
/Applications/Xcode.app/Contents/Developer

But Qt Creator auto-detects and sets up the compiler /usr/bin/clang(++)
for desktop kits. This leads to a compiler mismatch between kits and the
imported build, and to new kits registered in Qt Creator for the import.

Since /usr/bin/clang(++) is just a thin wrapper that resolves to the
compiler in the current developer directory, resolve that in Qt Creator
with "xcrun -f <command>" too (caching the result), and include that
when comparing toolchains for importing builds.

Fixes: QTCREATORBUG-27591
Change-Id: I301e2a4e267450b488b49d0c32d4ce89001bb5ec
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Eike Ziller
2022-06-08 16:00:13 +02:00
parent 4612a052f4
commit 948f0070fa
7 changed files with 40 additions and 8 deletions

View File

@@ -343,6 +343,11 @@ void ToolChain::setCompilerCommand(const FilePath &command)
toolChainUpdated();
}
bool ToolChain::matchesCompilerCommand(const Utils::FilePath &command, const Environment &env) const
{
return env.isSameExecutable(compilerCommand().toString(), command.toString());
}
void ToolChain::setCompilerCommandKey(const QString &commandKey)
{
d->m_compilerCommandKey = commandKey;