summaryrefslogtreecommitdiff
path: root/src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp')
-rw-r--r--src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp24
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);