[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-dev] Project Environment Not Being Updated
|
Hi all,
I'm trying to modify the environment variables of a custom projectType
that I created. I set the projectEnvironmentSupplier variable to a
class that extends the IProjectEnvironmentVariableSupplier interface
and I think I implemented it correctly. The getVariables() function
does get called when I create a projectType or start a new eclipse
session (once for each project), but I cannot see any of the custom
variables under Project Icon -> Properties -> C/C++ Build ->
Environment.
Also I have another related question. If I launch a new system program
using ProcessFactory.getFactory().exec(), does it use the environment
of the project?
Cheers,
Karol Krizka
//Find the environment, used later in CMTEnvironment
public EnvVar[] getEnvironment()
{
String[] env=sh.environment();
EnvVar[] ret=new EnvVar[env.length];
//Convert from Java format to CDT format
for(int i=0;i<env.length;i++)
{
String[] set=env[i].split("=",2);
ret[i]=new EnvVar(set[0],set[1]);
}
return ret;
}
public class CMTEnvironment implements IProjectEnvironmentVariableSupplier {
private CMTHome ch;
public CMTEnvironment()
{
ch=CMTHome.getGlobal();
}
public IBuildEnvironmentVariable getVariable(String variableName,
IManagedProject project, IEnvironmentVariableProvider provider) {
EnvVar[] vars=ch.getEnvironment();
for(int i=0;i<vars.length;i++)
if(vars[i].getName()==variableName) return vars[i];
return null;
}
public IBuildEnvironmentVariable[] getVariables(IManagedProject project,
IEnvironmentVariableProvider provider)
{
System.out.println("Provide!");
return ch.getEnvironment();
}
}
public class EnvVar implements IBuildEnvironmentVariable
{
public static final int ENVVAR_REPLACE = 1;
public static final int ENVVAR_REMOVE = 2;
public static final int ENVVAR_PREPEND = 3;
public static final int ENVVAR_APPEND = 4;
private String name;
private String value;
public EnvVar(String _n,String _v)
{
name=_n;
value=_v;
}
public String getName()
{
return name;
}
public String getDelimiter()
{
return ";";
}
public int getOperation()
{
return ENVVAR_REPLACE;
}
public String getValue()
{
return value;
}
public String toString()
{
return name+" = "+value;
}
}