forked from qt-creator/qt-creator
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:
@@ -394,10 +394,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
||||
if (!Utils::contains(allLanguages, [&tcd](const Id& language) {return language == tcd.language;}))
|
||||
continue;
|
||||
ToolChain *tc = ToolChainKitAspect::toolChain(k, tcd.language);
|
||||
if (!tc
|
||||
|| !Utils::Environment::systemEnvironment()
|
||||
.isSameExecutable(tc->compilerCommand().toString(),
|
||||
tcd.compilerPath.toString())) {
|
||||
if (!tc || !tc->matchesCompilerCommand(tcd.compilerPath)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user