diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp index bbc937d226625d12387dc0a45f55afad8c9ee665..790ba14cb4c3ef990faf879da34cbb82aef5950d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp @@ -42,6 +42,7 @@ #include <projectexplorer/abi.h> #include <projectexplorer/projectexplorerconstants.h> #include <texteditor/fontsettings.h> +#include <remotelinux/remotelinux_constants.h> #include <QVBoxLayout> #include <QFormLayout> @@ -179,7 +180,8 @@ QList<GeneratorInfo> GeneratorInfo::generatorInfosFor(ProjectExplorer::Kit *k, N if (!tc) return results; Core::Id deviceType = ProjectExplorer::DeviceTypeKitInformation::deviceTypeId(k); - if (deviceType != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) + if (deviceType != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE + && deviceType != RemoteLinux::Constants::GenericLinuxOsType) return results; ProjectExplorer::Abi targetAbi = tc->targetAbi(); if (n != ForceNinja) { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index a3801d3e20fd903eb79ce22a48f52f98f28203c5..ea5cf7b9ff9d78abeeb1e9c37151c24cad1481ca 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -41,11 +41,13 @@ #include <projectexplorer/headerpath.h> #include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildmanager.h> +#include <projectexplorer/buildtargetinfo.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/kitmanager.h> #include <projectexplorer/toolchain.h> #include <projectexplorer/target.h> #include <projectexplorer/deployconfiguration.h> +#include <projectexplorer/deploymentdata.h> #include <projectexplorer/projectmacroexpander.h> #include <qtsupport/customexecutablerunconfiguration.h> #include <qtsupport/baseqtversion.h> @@ -261,6 +263,7 @@ bool CMakeProject::parseCMakeLists() // qDebug()<<""; // } + updateApplicationAndDeploymentTargets(); createUiCodeModelSupport(); @@ -562,9 +565,7 @@ bool CMakeProject::fromMap(const QVariantMap &map) t->addBuildConfiguration(bc); - DeployConfigurationFactory *fac = ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>(); - ProjectExplorer::DeployConfiguration *dc = fac->create(t, ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID); - t->addDeployConfiguration(dc); + t->updateDefaultDeployConfigurations(); addTarget(t); } else { @@ -608,17 +609,9 @@ bool CMakeProject::fromMap(const QVariantMap &map) bool CMakeProject::setupTarget(Target *t) { - CMakeBuildConfigurationFactory *factory - = ExtensionSystem::PluginManager::getObject<CMakeBuildConfigurationFactory>(); - CMakeBuildConfiguration *bc = factory->create(t, Constants::CMAKE_BC_ID, QLatin1String("all")); - if (!bc) - return false; - - t->addBuildConfiguration(bc); + t->updateDefaultBuildConfigurations(); + t->updateDefaultDeployConfigurations(); - DeployConfigurationFactory *fac = ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>(); - ProjectExplorer::DeployConfiguration *dc = fac->create(t, ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID); - t->addDeployConfiguration(dc); return true; } @@ -720,6 +713,50 @@ void CMakeProject::updateRunConfigurations(Target *t) } } +void CMakeProject::updateApplicationAndDeploymentTargets() +{ + Target *t = activeTarget(); + + QFile deploymentFile; + QTextStream deploymentStream; + QString deploymentPrefix; + QDir sourceDir; + + sourceDir.setPath(t->project()->projectDirectory()); + deploymentFile.setFileName(sourceDir.filePath(QLatin1String("QtCreatorDeployment.txt"))); + if (deploymentFile.open(QFile::ReadOnly | QFile::Text)) { + deploymentStream.setDevice(&deploymentFile); + deploymentPrefix = deploymentStream.readLine(); + if (!deploymentPrefix.endsWith(QLatin1Char('/'))) + deploymentPrefix.append(QLatin1Char('/')); + } + + BuildTargetInfoList appTargetList; + DeploymentData deploymentData; + QDir buildDir(t->activeBuildConfiguration()->buildDirectory().toString()); + foreach (const CMakeBuildTarget &ct, m_buildTargets) { + if (ct.executable.isEmpty()) + continue; + + deploymentData.addFile(ct.executable, deploymentPrefix + buildDir.relativeFilePath(QFileInfo(ct.executable).dir().path()), DeployableFile::TypeExecutable); + if (!ct.library) { + // TODO: Put a path to corresponding .cbp file into projectFilePath? + appTargetList.list << BuildTargetInfo(ct.executable, ct.executable); + } + } + + QString absoluteSourcePath = sourceDir.absolutePath(); + if (!absoluteSourcePath.endsWith(QLatin1Char('/'))) + absoluteSourcePath.append(QLatin1Char('/')); + while (!deploymentStream.atEnd()) { + QStringList file = deploymentStream.readLine().split(QLatin1Char(':')); + deploymentData.addFile(absoluteSourcePath + file.at(0), deploymentPrefix + file.at(1)); + } + + t->setApplicationTargets(appTargetList); + t->setDeploymentData(deploymentData); +} + void CMakeProject::createUiCodeModelSupport() { QHash<QString, QString> uiFileHash; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 804eecc756473df2d1038bf71b581d3ed04494c0..c7946d950206350b4500f7066cdaad17462b7003 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -125,6 +125,7 @@ private: void createUiCodeModelSupport(); QString uiHeaderFile(const QString &uiFile); void updateRunConfigurations(ProjectExplorer::Target *t); + void updateApplicationAndDeploymentTargets(); CMakeManager *m_manager; ProjectExplorer::Target *m_activeTarget;