mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Add New Empty CMake project wizard.
Change-Id: I6f4fc0db27a863700eafcac751fa168dc32d96d5
This commit is contained in:
parent
fbccef3ff1
commit
78ba80e1d5
3 changed files with 82 additions and 15 deletions
|
@ -27,6 +27,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
|
import org.eclipse.tools.templates.freemarker.FMProjectGenerator;
|
||||||
import org.eclipse.tools.templates.freemarker.SourceRoot;
|
import org.eclipse.tools.templates.freemarker.SourceRoot;
|
||||||
|
import org.eclipse.tools.templates.freemarker.TemplateManifest;
|
||||||
import org.osgi.framework.Bundle;
|
import org.osgi.framework.Bundle;
|
||||||
|
|
||||||
public class CMakeProjectGenerator extends FMProjectGenerator {
|
public class CMakeProjectGenerator extends FMProjectGenerator {
|
||||||
|
@ -54,25 +55,29 @@ public class CMakeProjectGenerator extends FMProjectGenerator {
|
||||||
public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
|
public void generate(Map<String, Object> model, IProgressMonitor monitor) throws CoreException {
|
||||||
super.generate(model, monitor);
|
super.generate(model, monitor);
|
||||||
|
|
||||||
// Create the source folders
|
|
||||||
IProject project = getProject();
|
|
||||||
List<IPathEntry> entries = new ArrayList<>();
|
List<IPathEntry> entries = new ArrayList<>();
|
||||||
List<SourceRoot> srcRoots = getManifest().getSrcRoots();
|
IProject project = getProject();
|
||||||
if (srcRoots != null && !srcRoots.isEmpty()) {
|
|
||||||
for (SourceRoot srcRoot : srcRoots) {
|
// Create the source folders
|
||||||
IFolder sourceFolder = project.getFolder(srcRoot.getDir());
|
TemplateManifest manifest = getManifest();
|
||||||
if (!sourceFolder.exists()) {
|
if (manifest != null) {
|
||||||
sourceFolder.create(true, true, monitor);
|
List<SourceRoot> srcRoots = getManifest().getSrcRoots();
|
||||||
|
if (srcRoots != null && !srcRoots.isEmpty()) {
|
||||||
|
for (SourceRoot srcRoot : srcRoots) {
|
||||||
|
IFolder sourceFolder = project.getFolder(srcRoot.getDir());
|
||||||
|
if (!sourceFolder.exists()) {
|
||||||
|
sourceFolder.create(true, true, monitor);
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath()));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath()));
|
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(),
|
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(), //$NON-NLS-1$
|
||||||
new IPath[] { new Path("**/CMakeFiles/**") }));
|
new IPath[] { new Path("**/CMakeFiles/**") })); //$NON-NLS-1$
|
||||||
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
|
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
|
||||||
monitor);
|
monitor);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
</tag>
|
</tag>
|
||||||
<template
|
<template
|
||||||
icon="icons/cmake_logo-main.png"
|
icon="icons/cmake_logo-main.png"
|
||||||
id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
|
id="org.eclipse.cdt.cmake.ui.newProjectTemplate"
|
||||||
label="CMake Project"
|
label="CMake Project"
|
||||||
wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
|
wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
|
||||||
<description>
|
<description>
|
||||||
|
@ -50,6 +50,21 @@
|
||||||
id="org.eclipse.cdt.cmake.ui.tag">
|
id="org.eclipse.cdt.cmake.ui.tag">
|
||||||
</tagReference>
|
</tagReference>
|
||||||
</template>
|
</template>
|
||||||
|
<template
|
||||||
|
icon="icons/cmake_logo-main.png"
|
||||||
|
id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
|
||||||
|
label="Empty or Existing CMake Project"
|
||||||
|
wizard="org.eclipse.cdt.cmake.ui.internal.EmptyCMakeProjectWizard">
|
||||||
|
<description>
|
||||||
|
Create a CMake project with no files. Can be used to create one over existing content.
|
||||||
|
</description>
|
||||||
|
<tagReference
|
||||||
|
id="org.eclipse.cdt.ui.cdtTag">
|
||||||
|
</tagReference>
|
||||||
|
<tagReference
|
||||||
|
id="org.eclipse.cdt.cmake.ui.tag">
|
||||||
|
</tagReference>
|
||||||
|
</template>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.cdt.launch.coreBuildTab">
|
point="org.eclipse.cdt.launch.coreBuildTab">
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2016 QNX Software Systems and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.cmake.ui.internal;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.cmake.core.CMakeProjectGenerator;
|
||||||
|
import org.eclipse.jface.dialogs.Dialog;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.tools.templates.core.IGenerator;
|
||||||
|
import org.eclipse.tools.templates.ui.TemplateWizard;
|
||||||
|
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
|
||||||
|
|
||||||
|
public class EmptyCMakeProjectWizard extends TemplateWizard {
|
||||||
|
|
||||||
|
private WizardNewProjectCreationPage mainPage;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addPages() {
|
||||||
|
mainPage = new WizardNewProjectCreationPage("basicNewProjectPage") { //$NON-NLS-1$
|
||||||
|
@Override
|
||||||
|
public void createControl(Composite parent) {
|
||||||
|
super.createControl(parent);
|
||||||
|
createWorkingSetGroup((Composite) getControl(), getSelection(),
|
||||||
|
new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
|
||||||
|
Dialog.applyDialogFont(getControl());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mainPage.setTitle("New CMake Project"); //$NON-NLS-1$
|
||||||
|
mainPage.setDescription("Specify properties of new CMake project."); //$NON-NLS-1$
|
||||||
|
this.addPage(mainPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected IGenerator getGenerator() {
|
||||||
|
CMakeProjectGenerator generator = new CMakeProjectGenerator(null);
|
||||||
|
generator.setProjectName(mainPage.getProjectName());
|
||||||
|
if (!mainPage.useDefaults()) {
|
||||||
|
generator.setLocationURI(mainPage.getLocationURI());
|
||||||
|
}
|
||||||
|
return generator;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue