|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Programatically create CDT projectWe have a plug-in that relies on the code-browsing capabilities of CDT. Currently we have a perl script that pre-creates/populates a directory in the workspace and we tell the users to go to the C++ Project wizard, type the project, select our project type and hit Finish. The users, of course, would like the project creation to be part of the magic script also. Our project type/tool chain is a stripped down version of the gcc toolchain and simply provides an alternative implementation of the scannerInfoCollector (reads the settings from a file created by the magic script). We currently don't support "building" with our toolchain. I can create a CDT project but have had no luck in figuring out how to set the project type/toolchain/configuration to our custom one. I think I need to do what MBSWizardHandler.createProject() does but there seems to be several internal classes used in that method. Any ideas or pointers would be welcome. Thanks,
_______________________________________________ cdt-dev mailing list cdt-dev@... https://dev.eclipse.org/mailman/listinfo/cdt-dev |
|
|
Re: Programatically create CDT projectHi Stephen,
On Fri, Dec 19, 2008 at 1:19 PM, Kennedy, Stephen M (Steve) <stevekennedy@...> wrote:
I just posted a few days ago an example of creating Standard Make http://www.eclipse.org/newsportal/article.php?id=17773&group=eclipse.tools.cdt#17773
Here is an example for Managed project. import org.eclipse.cdt.managedbuilder.testplugin.BuildSystemTestHelper; import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin;
import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper; CoreModel coreModel = CoreModel.getDefault();
ICProjectDescriptionManager mngr = coreModel.getProjectDescriptionManager(); String pluginProjectTypeId = "cdt.managedbuild.target.gnu.cygwin.exe"; String projectName = "testExecutableCygwinGcc"; {
// Create model project and accompanied descriptions IProject project = BuildSystemTestHelper.createProject(projectName);
// Create project description ICProjectDescription des = coreModel.createProjectDescription(project, false);
Assert.assertNotNull("createDescription returned null!", des); {
// Create one configuration description ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project);
IProjectType type = ManagedBuildManager.getProjectType(pluginProjectTypeId); Assert.assertNotNull("project type not found", type);
ManagedProject mProj = new ManagedProject(project, type); info.setManagedProject(mProj);
IConfiguration cfgs[] = type.getConfigurations(); Assert.assertNotNull("configurations not found", cfgs);
Assert.assertTrue("no configurations found in the project type",cfgs.length>0); for (IConfiguration configuration : cfgs) {
String id = ManagedBuildManager.calculateChildId(configuration.getId(), null); Configuration config = new Configuration(mProj, (Configuration)configuration, id, false, true, false);
CConfigurationData data = config.getConfigurationData(); Assert.assertNotNull("data is null for created configuration", data);
ICConfigurationDescription cfgDes = des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); }
Assert.assertEquals(2, des.getConfigurations().length); }
// Persist project description. coreModel.setProjectDescription(project, des); project.close(null); } I hope you'll find that instructive.
Thanks, Andrew
_______________________________________________ cdt-dev mailing list cdt-dev@... https://dev.eclipse.org/mailman/listinfo/cdt-dev |
|
|
Re: Programatically create CDT projectAlternatively, have you seend the Project Template Engine? You can find
docs in the CDT SDK. Andrew Gvozdev wrote: > Hi Stephen, > > On Fri, Dec 19, 2008 at 1:19 PM, Kennedy, Stephen M (Steve) > <stevekennedy@... > <mailto:stevekennedy@...>> wrote: > > We have a plug-in that relies on the code-browsing capabilities of > CDT. Currently we have a perl script that pre-creates/populates a > directory in the workspace and we tell the users to go to the C++ > Project wizard, type the project, select our project type and hit > Finish. The users, of course, would like the project creation to be > part of the magic script also. > > Our project type/tool chain is a stripped down version of the gcc > toolchain and simply provides an alternative implementation of the > scannerInfoCollector (reads the settings from a file created by the > magic script). We currently don't support "building" with our > toolchain. > > I can create a CDT project but have had no luck in figuring out how > to set the project type/toolchain/configuration to our custom one. > I think I need to do what MBSWizardHandler.createProject() does but > there seems to be several internal classes used in that method. > > Any ideas or pointers would be welcome. > > > I just posted a few days ago an example of creating Standard > Make http://www.eclipse.org/newsportal/article.php?id=17773&group=eclipse.tools.cdt#17773 > <http://www.eclipse.org/newsportal/article.php?id=17773&group=eclipse.tools.cdt#17773> > > Here is an example for Managed project. > > import org.eclipse.cdt.managedbuilder.testplugin.BuildSystemTestHelper; > import org.eclipse.cdt.managedbuilder.testplugin.CTestPlugin; > import org.eclipse.cdt.managedbuilder.testplugin.ManagedBuildTestHelper; > > CoreModel coreModel = CoreModel.getDefault(); > ICProjectDescriptionManager mngr = coreModel.getProjectDescriptionManager(); > > String pluginProjectTypeId = "cdt.managedbuild.target.gnu.cygwin.exe"; > String projectName = "testExecutableCygwinGcc"; > > > { > // Create model project and accompanied descriptions > IProject project = BuildSystemTestHelper.createProject(projectName); > // Create project description > ICProjectDescription des = coreModel.createProjectDescription(project, > false); > Assert.assertNotNull("createDescription returned null!", des); > > { > // Create one configuration description > ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project); > IProjectType type = ManagedBuildManager.getProjectType(pluginProjectTypeId); > Assert.assertNotNull("project type not found", type); > > ManagedProject mProj = new ManagedProject(project, type); > info.setManagedProject(mProj); > > IConfiguration cfgs[] = type.getConfigurations(); > Assert.assertNotNull("configurations not found", cfgs); > Assert.assertTrue("no configurations found in the project > type",cfgs.length>0); > > for (IConfiguration configuration : cfgs) { > String id = ManagedBuildManager.calculateChildId(configuration.getId(), > null); > Configuration config = new Configuration(mProj, > (Configuration)configuration, id, false, true, false); > CConfigurationData data = config.getConfigurationData(); > Assert.assertNotNull("data is null for created configuration", data); > ICConfigurationDescription cfgDes = > des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); > } > Assert.assertEquals(2, des.getConfigurations().length); > } > > // Persist project description. > coreModel.setProjectDescription(project, des); > > project.close(null); > } > > I hope you'll find that instructive. > > Thanks, > Andrew > > Thanks, > Steve Kennedy > > > _______________________________________________ > cdt-dev mailing list > cdt-dev@... <mailto:cdt-dev@...> > https://dev.eclipse.org/mailman/listinfo/cdt-dev > > > > ------------------------------------------------------------------------ > > _______________________________________________ > cdt-dev mailing list > cdt-dev@... > https://dev.eclipse.org/mailman/listinfo/cdt-dev -- Subs _______________________________________________ cdt-dev mailing list cdt-dev@... https://dev.eclipse.org/mailman/listinfo/cdt-dev |
|
|
RE: Programatically create CDT projectAndrew,
Thanks very much for your response. I've tried
this code out and it seems to successfully create a project of my project
type. This code is similar to the code in MBSWizardHandler.createProject()
minus some things that apparently aren't crucial to project creation in this
context (I thank you for that!).
I'm not sure what to
make of the fact that ManagedBuildInfo,
ManagedProject and Configuration are all internal classes though. I
thought when I played around with this before (this summer) the IDE warned about
"discouraged access" but apparently I'm confusing this with some other internal
classes I was playing around with.
Thanks
again,
Steve
Hi Stephen, _______________________________________________ cdt-dev mailing list cdt-dev@... https://dev.eclipse.org/mailman/listinfo/cdt-dev |
| Free embeddable forum powered by Nabble | Forum Help |