diff --git a/build/org.eclipse.cdt.build.core/src/org/eclipse/cdt/build/core/CBuildConfiguration.java b/build/org.eclipse.cdt.build.core/src/org/eclipse/cdt/build/core/CBuildConfiguration.java index 2196eb63354..6a5f4c5e2c9 100644 --- a/build/org.eclipse.cdt.build.core/src/org/eclipse/cdt/build/core/CBuildConfiguration.java +++ b/build/org.eclipse.cdt.build.core/src/org/eclipse/cdt/build/core/CBuildConfiguration.java @@ -155,7 +155,7 @@ public abstract class CBuildConfiguration extends PlatformObject { } public void clearScannerInfoCache() throws CoreException { - scannerInfoCache = null; + scannerInfoCache.clear(); } public Collection getConsoleParsers() throws CoreException { diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java index 2218c78f074..1078f102c7d 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/build/QtBuilder.java @@ -89,6 +89,13 @@ public class QtBuilder extends IncrementalProjectBuilder { console.monitor(process, null, buildDir); project.refreshLocal(IResource.DEPTH_INFINITE, monitor); + + // clear the scanner info cache + // TODO be more surgical about what to clear based on what was + // built. + qtConfig.clearScannerInfoCache(); + + console.writeOutput("Complete.\n"); return new IProject[] { project }; } catch (IOException e) { throw new CoreException(new Status(IStatus.ERROR, Activator.ID, "Building " + project.getName(), e)); //$NON-NLS-1$ diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/launch/QtLocalRunLaunchConfigDelegate.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/launch/QtLocalRunLaunchConfigDelegate.java index 37049e0b434..e0c5e0fdb36 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/launch/QtLocalRunLaunchConfigDelegate.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/internal/qt/core/launch/QtLocalRunLaunchConfigDelegate.java @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.ILaunchManager; import org.eclipse.launchbar.core.target.ILaunchTarget; import org.eclipse.launchbar.core.target.launch.ITargetedLaunch; @@ -44,6 +45,14 @@ public class QtLocalRunLaunchConfigDelegate extends QtLaunchConfigurationDelegat Map env = builder.environment(); qtBuildConfig.setProgramEnvironment(env); + Map configEnv = configuration.getAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES, + (Map) null); + if (configEnv != null) { + for (Map.Entry entry : configEnv.entrySet()) { + env.put(entry.getKey(), entry.getValue()); + } + } + try { Process process = builder.start(); DebugPlugin.newProcess(launch, process, "main"); diff --git a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtBuildConfiguration.java b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtBuildConfiguration.java index fff397ac7c9..669000a309a 100644 --- a/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtBuildConfiguration.java +++ b/qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/core/QtBuildConfiguration.java @@ -211,6 +211,12 @@ public class QtBuildConfiguration extends CBuildConfiguration { args.add(resource.getLocation().toString()); String[] includePaths = getProperty("INCLUDEPATH").split(" "); //$NON-NLS-1$ //$NON-NLS-2$ + for (int i = 0; i < includePaths.length; ++i) { + Path path = Paths.get(includePaths[i]); + if (!path.isAbsolute()) { + includePaths[i] = getBuildDirectory().resolve(path).toString(); + } + } ILanguage language = LanguageManager.getInstance() .getLanguage(CCorePlugin.getContentType(getProject(), resource.getName()), getProject()); // $NON-NLS-1$ @@ -223,4 +229,10 @@ public class QtBuildConfiguration extends CBuildConfiguration { return info; } + @Override + public void clearScannerInfoCache() throws CoreException { + super.clearScannerInfoCache(); + properties = null; + } + } diff --git a/qt/org.eclipse.cdt.qt.ui/plugin.xml b/qt/org.eclipse.cdt.qt.ui/plugin.xml index 476e89cc8db..499cac7cf83 100644 --- a/qt/org.eclipse.cdt.qt.ui/plugin.xml +++ b/qt/org.eclipse.cdt.qt.ui/plugin.xml @@ -95,6 +95,15 @@ + + + +