diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp index 536ce0fdf5..97a82d9c59 100644 --- a/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp +++ b/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp @@ -36,6 +36,7 @@ #include <projectexplorer/toolchain.h> #include <projectexplorer/projectexplorerconstants.h> #include <qtsupport/baseqtversion.h> +#include <utils/hostosinfo.h> #include <utils/qtcassert.h> #include <qbs.h> @@ -231,6 +232,29 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor data.insert(QLatin1String(CPP_LINKERNAME), compilerName); } data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxxFileInfo.absolutePath()); + + QVariantMap m; + if (toolchain.contains(QLatin1String("clang"))) { + m[QLatin1String("c")] = m[QLatin1String("objc")] = QLatin1String("clang"); + m[QLatin1String("cpp")] = m[QLatin1String("objcpp")] = QLatin1String("clang++"); + } else if (toolchain.contains(QLatin1String("gcc"))) { + m[QLatin1String("c")] = m[QLatin1String("objc")] = QLatin1String("gcc"); + m[QLatin1String("cpp")] = m[QLatin1String("objcpp")] = QLatin1String("g++"); + } + const QString fullPrefix = cxxFileInfo.absolutePath() + QLatin1Char('/') + toolchainPrefix; + for (auto it = m.begin(); it != m.end();) { + const QString filePath = Utils::HostOsInfo::withExecutableSuffix(fullPrefix + + it.value().toString()); + if (QFile::exists(filePath)) { + it.value() = filePath; + ++it; + } else { + it = m.erase(it); + } + } + if (!m.isEmpty()) + data.insert(QLatin1String(CPP_COMPILERPATHBYLANGUAGE), m); + if (targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMsvc2013Flavor) { const QLatin1String flags("/FS"); data.insert(QLatin1String(CPP_PLATFORMCFLAGS), flags); |