Changeset View
Changeset View
Standalone View
Standalone View
plugins/cmake/cmakemanager.cpp
Show First 20 Lines • Show All 309 Lines • ▼ Show 20 Line(s) | 304 | { | |||
---|---|---|---|---|---|
310 | 310 | | |||
311 | KJob *job = createImportJob(folder); | 311 | KJob *job = createImportJob(folder); | ||
312 | project->setReloadJob(job); | 312 | project->setReloadJob(job); | ||
313 | ICore::self()->runController()->registerJob( job ); | 313 | ICore::self()->runController()->registerJob( job ); | ||
314 | if (folder == project->projectItem()) { | 314 | if (folder == project->projectItem()) { | ||
315 | connect(job, &KJob::finished, this, [project](KJob* job) { | 315 | connect(job, &KJob::finished, this, [project](KJob* job) { | ||
316 | if (job->error()) | 316 | if (job->error()) | ||
317 | return; | 317 | return; | ||
318 | | ||||
319 | KDevelop::ICore::self()->projectController()->projectConfigurationChanged(project); | ||||
318 | KDevelop::ICore::self()->projectController()->reparseProject(project, true); | 320 | KDevelop::ICore::self()->projectController()->reparseProject(project, true); | ||
mwolff: thinking ahead: we should think about moving this reparse to a central place, connected to the… | |||||
apol: Thought about it too, still I feel more comfortable having it here. | |||||
319 | }); | 321 | }); | ||
320 | } | 322 | } | ||
321 | 323 | | |||
322 | return true; | 324 | return true; | ||
323 | } | 325 | } | ||
324 | 326 | | |||
325 | static void populateTargets(ProjectFolderItem* folder, const QHash<KDevelop::Path, QVector<CMakeTarget>>& targets) | 327 | static void populateTargets(ProjectFolderItem* folder, const QHash<KDevelop::Path, QVector<CMakeTarget>>& targets) | ||
326 | { | 328 | { | ||
▲ Show 20 Lines • Show All 652 Lines • ▼ Show 20 Line(s) | |||||
979 | void CMakeManager::reloadProjects() | 981 | void CMakeManager::reloadProjects() | ||
980 | { | 982 | { | ||
981 | for(IProject* project: m_projects.keys()) { | 983 | for(IProject* project: m_projects.keys()) { | ||
982 | CMake::checkForNeedingConfigure(project); | 984 | CMake::checkForNeedingConfigure(project); | ||
983 | reload(project->projectItem()); | 985 | reload(project->projectItem()); | ||
984 | } | 986 | } | ||
985 | } | 987 | } | ||
986 | 988 | | |||
989 | CMakeTarget CMakeManager::targetInformation(KDevelop::ProjectTargetItem* item) const | ||||
990 | { | ||||
991 | const auto targets = m_projects[item->project()].targets[item->parent()->path()]; | ||||
992 | for (auto target: targets) { | ||||
993 | if (item->text() == target.name) { | ||||
994 | return target; | ||||
995 | } | ||||
996 | } | ||||
997 | return {}; | ||||
998 | } | ||||
999 | | ||||
1000 | KDevelop::Path CMakeManager::compiler(KDevelop::ProjectTargetItem* item) const | ||||
1001 | { | ||||
1002 | const auto targetInfo = targetInformation(item); | ||||
1003 | if (targetInfo.sources.isEmpty()) { | ||||
1004 | qCDebug(CMAKE) << "could not find target" << item->text(); | ||||
mwolff: category-based logging, also below | |||||
1005 | return {}; | ||||
1006 | } | ||||
1007 | | ||||
1008 | const auto info = m_projects[item->project()].compilationData.files[targetInfo.sources.constFirst()]; | ||||
1009 | const auto lang = info.language; | ||||
1010 | if (lang.isEmpty()) { | ||||
1011 | qCDebug(CMAKE) << "no language for" << item << item->text() << info.defines << targetInfo.sources.constFirst(); | ||||
mwolff: remove ... | |||||
1012 | return {}; | ||||
1013 | } | ||||
1014 | const QString var = QLatin1String("CMAKE_") + lang + QLatin1String("_COMPILER"); | ||||
mwolff: use QLatin1String since you are concatenating | |||||
1015 | const auto ret = CMake::readCacheValues(KDevelop::Path(buildDirectory(item), QStringLiteral("CMakeCache.txt")), {var}); | ||||
1016 | qCDebug(CMAKE) << "compiler for" << lang << var << ret; | ||||
1017 | return KDevelop::Path(ret.value(var)); | ||||
1018 | } | ||||
1019 | | ||||
987 | #include "cmakemanager.moc" | 1020 | #include "cmakemanager.moc" |
thinking ahead: we should think about moving this reparse to a central place, connected to the projectConfigurationChanged signal above