mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 06:32:10 +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.tools.templates.freemarker.FMProjectGenerator;
|
||||
import org.eclipse.tools.templates.freemarker.SourceRoot;
|
||||
import org.eclipse.tools.templates.freemarker.TemplateManifest;
|
||||
import org.osgi.framework.Bundle;
|
||||
|
||||
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 {
|
||||
super.generate(model, monitor);
|
||||
|
||||
// Create the source folders
|
||||
IProject project = getProject();
|
||||
List<IPathEntry> entries = new ArrayList<>();
|
||||
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);
|
||||
IProject project = getProject();
|
||||
|
||||
// Create the source folders
|
||||
TemplateManifest manifest = getManifest();
|
||||
if (manifest != null) {
|
||||
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()));
|
||||
}
|
||||
|
||||
entries.add(CoreModel.newSourceEntry(sourceFolder.getFullPath()));
|
||||
} else {
|
||||
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
|
||||
}
|
||||
} else {
|
||||
entries.add(CoreModel.newSourceEntry(getProject().getFullPath()));
|
||||
}
|
||||
|
||||
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(),
|
||||
new IPath[] { new Path("**/CMakeFiles/**") }));
|
||||
entries.add(CoreModel.newOutputEntry(getProject().getFolder("build").getFullPath(), //$NON-NLS-1$
|
||||
new IPath[] { new Path("**/CMakeFiles/**") })); //$NON-NLS-1$
|
||||
CoreModel.getDefault().create(project).setRawPathEntries(entries.toArray(new IPathEntry[entries.size()]),
|
||||
monitor);
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
</tag>
|
||||
<template
|
||||
icon="icons/cmake_logo-main.png"
|
||||
id="org.eclipse.cdt.cmake.ui.emptyProjectTemplate"
|
||||
id="org.eclipse.cdt.cmake.ui.newProjectTemplate"
|
||||
label="CMake Project"
|
||||
wizard="org.eclipse.cdt.cmake.ui.internal.NewCMakeProjectWizard">
|
||||
<description>
|
||||
|
@ -50,6 +50,21 @@
|
|||
id="org.eclipse.cdt.cmake.ui.tag">
|
||||
</tagReference>
|
||||
</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
|
||||
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