2010-01-04 49 views
4

有没有什么办法可以在项目文件(有或没有vsprops)中创建一个环境变量substituion,如果找不到变量,将被替换为默认值?我还没有找到任何方法来做到这一点,因为一切似乎都覆盖了环境变量。vcproj/vsprops的可选环境变量

编辑:我需要这个工作的财产,而不是一个环境变量。具体来说,devenv可以通过指定目标构建目录的环境变量从其他源调用。如果该变量不存在(可能是因为devenv只是用作IDE),那么它应该使用默认值。

我已经有这个工作的MSBuild;我现在需要它为VCBuild工作。

回答

0

我知道它在技术上我原来的问题的范围之外,但我已经通过编写一个插件来解决这个问题,该插件会检测环境变量是否为se t,如果不是,则构造变量的默认值并存储它。这不是最优雅的解决方案,但它的工作原理。

0

嗯,显然我不知道该怎么fromat XML这里

<PropertyGroup Condition=" '$(your_var)' == '' "> 
    <your_var>default</your_var> 
</PropertyGroup> 
+1

不幸的是,这是MSBuild,而不是VCBuild。我希望这很简单。 – coppro 2010-01-04 22:37:45

+0

我的歉意我错过了你对VCBuild的参考 – mfeingold 2010-01-04 23:51:37

1

我不认为这可以在项目层面进行:在VC项目文件不会被解析为逻辑语句,据我所知(除了可以使用批处理文件语法的构建事件之外,那是因为它们是作为批处理文件运行的)。

你唯一能做的就是创建一个具有默认变量的全局环境变量。如果devenv被调用的环境也指定它,它将被覆盖。

环境:

MYVSOUTDIR="c:/temp" 

vcproj/vsprops:在一个批处理文件

OutputDirectory="$(MYVSOUTDIR)\_$(ConfigurationName)_$(PlatformName)" 

覆盖此:

set MYVSOUTDIR="d:/mytemp" 
devenv