mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
patch from Tianchao Li to fix https://bugs.eclipse.org/bugs/show_bug.cgi?id=136136
This commit is contained in:
parent
975237b92a
commit
825bc6be8c
4 changed files with 58 additions and 11 deletions
|
@ -140,9 +140,9 @@ public class MakeBuilder extends ACBuilder {
|
||||||
// remove all markers for this project
|
// remove all markers for this project
|
||||||
removeAllMarkers(currProject);
|
removeAllMarkers(currProject);
|
||||||
|
|
||||||
IPath workingDirectory = null;
|
IPath workingDirectory = info.getBuildLocation();
|
||||||
if (!info.getBuildLocation().isEmpty()) {
|
if (workingDirectory != null && !workingDirectory.isEmpty()) {
|
||||||
IResource res = currProject.getParent().findMember(info.getBuildLocation());
|
IResource res = currProject.getParent().findMember(workingDirectory);
|
||||||
if (res instanceof IContainer && res.exists()) {
|
if (res instanceof IContainer && res.exists()) {
|
||||||
workingDirectory = res.getLocation();
|
workingDirectory = res.getLocation();
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ import org.eclipse.cdt.core.CommandLauncher;
|
||||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||||
import org.eclipse.cdt.core.resources.IConsole;
|
import org.eclipse.cdt.core.resources.IConsole;
|
||||||
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
|
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
|
||||||
|
import org.eclipse.cdt.make.core.IMakeBuilderInfo;
|
||||||
|
import org.eclipse.cdt.make.core.MakeBuilder;
|
||||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||||
import org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider;
|
import org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider;
|
||||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2;
|
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2;
|
||||||
|
@ -30,8 +32,10 @@ import org.eclipse.cdt.make.internal.core.StreamMonitor;
|
||||||
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerConfigUtil;
|
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerConfigUtil;
|
||||||
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerInfoConsoleParserFactory;
|
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerInfoConsoleParserFactory;
|
||||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
|
import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
|
||||||
|
import org.eclipse.core.resources.IContainer;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
|
@ -157,7 +161,29 @@ public class DefaultRunSIProvider implements IExternalScannerInfoProvider {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected boolean initialize() {
|
protected boolean initialize() {
|
||||||
fWorkingDirectory = resource.getProject().getLocation();
|
|
||||||
|
IProject currProject = resource.getProject();
|
||||||
|
IMakeBuilderInfo info;
|
||||||
|
try {
|
||||||
|
info = MakeCorePlugin.createBuildInfo(resource.getProject(), MakeBuilder.BUILDER_ID);
|
||||||
|
} catch (CoreException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
IPath workingDirectory = info.getBuildLocation();
|
||||||
|
if (workingDirectory != null && !workingDirectory.isEmpty()) {
|
||||||
|
IResource res = currProject.getParent().findMember(workingDirectory);
|
||||||
|
if (res instanceof IContainer && res.exists()) {
|
||||||
|
workingDirectory = res.getLocation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (workingDirectory == null) {
|
||||||
|
workingDirectory = currProject.getLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
//fWorkingDirectory = resource.getProject().getLocation();
|
||||||
|
fWorkingDirectory = workingDirectory;
|
||||||
fCompileCommand = new Path(buildInfo.getProviderRunCommand(providerId));
|
fCompileCommand = new Path(buildInfo.getProviderRunCommand(providerId));
|
||||||
fCompileArguments = ScannerConfigUtil.tokenizeStringWithQuotes(buildInfo.getProviderRunArguments(providerId), "\"");//$NON-NLS-1$
|
fCompileArguments = ScannerConfigUtil.tokenizeStringWithQuotes(buildInfo.getProviderRunArguments(providerId), "\"");//$NON-NLS-1$
|
||||||
return (fCompileCommand != null);
|
return (fCompileCommand != null);
|
||||||
|
|
|
@ -68,7 +68,8 @@ SettingsBlock.makeCmd.use_default=Use default
|
||||||
SettingsBlock.makeCmd.label=Build command:
|
SettingsBlock.makeCmd.label=Build command:
|
||||||
SettingsBlock.makeDir.group_label=Build Directory
|
SettingsBlock.makeDir.group_label=Build Directory
|
||||||
SettingsBlock.makeDir.label=Build directory:
|
SettingsBlock.makeDir.label=Build directory:
|
||||||
SettingsBlock.makeDir.browse=Browse...
|
SettingsBlock.makeDir.browseLocal=Local...
|
||||||
|
SettingsBlock.makeDir.browseWorkspace=Workspace...
|
||||||
SettingsBlock.makeWorkbench.group_label=Workbench Build Behavior
|
SettingsBlock.makeWorkbench.group_label=Workbench Build Behavior
|
||||||
SettingsBlock.makeWorkbench.type=Workbench build type:
|
SettingsBlock.makeWorkbench.type=Workbench build type:
|
||||||
SettingsBlock.makeWorkbench.target=Make build target:
|
SettingsBlock.makeWorkbench.target=Make build target:
|
||||||
|
|
|
@ -43,6 +43,7 @@ import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
|
import org.eclipse.swt.widgets.DirectoryDialog;
|
||||||
import org.eclipse.swt.widgets.Event;
|
import org.eclipse.swt.widgets.Event;
|
||||||
import org.eclipse.swt.widgets.Group;
|
import org.eclipse.swt.widgets.Group;
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
|
@ -72,8 +73,9 @@ public class SettingsBlock extends AbstractCOptionPage {
|
||||||
private static final String MAKE_WORKBENCH_BUILD_CLEAN = PREFIX + ".makeWorkbench.clean"; //$NON-NLS-1$
|
private static final String MAKE_WORKBENCH_BUILD_CLEAN = PREFIX + ".makeWorkbench.clean"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String MAKE_BUILD_DIR_GROUP = PREFIX + ".makeDir.group_label"; //$NON-NLS-1$
|
private static final String MAKE_BUILD_DIR_GROUP = PREFIX + ".makeDir.group_label"; //$NON-NLS-1$
|
||||||
private static final String MAKE_BUILD_DIR_LABEL = PREFIX + ".makeDir.label"; //$NON-NLS-1$
|
private static final String MAKE_BUILD_DIR_LABEL = PREFIX + ".makeDir.label"; //$NON-NLS-1$
|
||||||
private static final String MAKE_BUILD_DIR_BROWSE = PREFIX + ".makeDir.browse"; //$NON-NLS-1$
|
private static final String MAKE_BUILD_DIR_BROWSE_LOCAL = PREFIX + ".makeDir.browseLocal"; //$NON-NLS-1$
|
||||||
|
private static final String MAKE_BUILD_DIR_BROWSE_WORKSPACE = PREFIX + ".makeDir.browseWorkspace"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String MAKE_BUILD_AUTO_TARGET = PREFIX + ".makeWorkbench.autoBuildTarget"; //$NON-NLS-1$
|
private static final String MAKE_BUILD_AUTO_TARGET = PREFIX + ".makeWorkbench.autoBuildTarget"; //$NON-NLS-1$
|
||||||
private static final String MAKE_BUILD_INCREMENTAL_TARGET = PREFIX + ".makeWorkbench.incrementalBuildTarget"; //$NON-NLS-1$
|
private static final String MAKE_BUILD_INCREMENTAL_TARGET = PREFIX + ".makeWorkbench.incrementalBuildTarget"; //$NON-NLS-1$
|
||||||
|
@ -314,7 +316,7 @@ public class SettingsBlock extends AbstractCOptionPage {
|
||||||
protected void createBuilderWorkingDirControls(Composite parent) {
|
protected void createBuilderWorkingDirControls(Composite parent) {
|
||||||
Group group = ControlFactory.createGroup(parent, MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_GROUP), 1);
|
Group group = ControlFactory.createGroup(parent, MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_GROUP), 1);
|
||||||
GridLayout layout = new GridLayout();
|
GridLayout layout = new GridLayout();
|
||||||
layout.numColumns = 4;
|
layout.numColumns = 5;
|
||||||
layout.makeColumnsEqualWidth = false;
|
layout.makeColumnsEqualWidth = false;
|
||||||
group.setLayout(layout);
|
group.setLayout(layout);
|
||||||
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
|
||||||
|
@ -330,9 +332,27 @@ public class SettingsBlock extends AbstractCOptionPage {
|
||||||
getContainer().updateContainer();
|
getContainer().updateContainer();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Button browse = new Button(group, SWT.NONE);
|
|
||||||
browse.setText(MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_BROWSE));
|
Button browseLocal = new Button(group, SWT.NONE);
|
||||||
browse.addSelectionListener(new SelectionAdapter() {
|
browseLocal.setText(MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_BROWSE_LOCAL));
|
||||||
|
browseLocal.addSelectionListener(new SelectionAdapter() {
|
||||||
|
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.NONE);
|
||||||
|
dialog.setText(MakeUIPlugin.getResourceString("SettingsBlock.title.selectLocationToBuildFrom"));
|
||||||
|
dialog.setFilterPath(getContainer().getProject().toString());
|
||||||
|
String directory = dialog.open();
|
||||||
|
if (directory != null) {
|
||||||
|
if (directory.trim().length() > 0) {
|
||||||
|
buildLocation.setText(directory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button browseWorkspace = new Button(group, SWT.NONE);
|
||||||
|
browseWorkspace.setText(MakeUIPlugin.getResourceString(MAKE_BUILD_DIR_BROWSE_WORKSPACE));
|
||||||
|
browseWorkspace.addSelectionListener(new SelectionAdapter() {
|
||||||
|
|
||||||
public void widgetSelected(SelectionEvent e) {
|
public void widgetSelected(SelectionEvent e) {
|
||||||
ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), getContainer().getProject(), true,
|
ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), getContainer().getProject(), true,
|
||||||
|
|
Loading…
Add table
Reference in a new issue