1

我使用environment variables in my VS2010 projects;这工作正常。如何在VS2010项目中为变量提供默认值?

但我想有默认值,只要环境变量不存在就使用。这可能吗?

编辑/解决:我的属性表看起来像这样(THIRDPARTY_ROOT可以通过在环境中设置其覆盖):

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
* Property sheet for 3rd party libraries 
* 
* - The BOOST_VER variable should be set to the same value as in common.mk 
* - The THIRDPARTY_ROOT variable can be overridden by an environment variable 
* with the same name. 
* 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ImportGroup Label="PropertySheets" /> 
    <PropertyGroup Label="UserMacros"> 
    <BOOST_VER>boost_1_48_0</BOOST_VER> 
    <THIRDPARTY_ROOT Condition="'$(THIRDPARTY_ROOT)' == '' ">C:\local\3rdparty</THIRDPARTY_ROOT> 
    </PropertyGroup> 
    <PropertyGroup /> 
    <ItemDefinitionGroup> 
    <ClCompile> 
     <AdditionalIncludeDirectories>$(THIRDPARTY_ROOT)\$(BOOST_VER)</AdditionalIncludeDirectories> 
    </ClCompile> 
    <Link /> 
    </ItemDefinitionGroup> 
    <ItemGroup> 
    <BuildMacro Include="BOOST_VER"> 
     <Value>$(BOOST_VER)</Value> 
    </BuildMacro> 
    <BuildMacro Include="THIRDPARTY_ROOT"> 
     <Value>$(THIRDPARTY_ROOT)</Value> 
    </BuildMacro> 
    </ItemGroup> 
</Project> 
+0

你为什么决定这样的环境变量是正确的解决方案? – 2012-01-13 13:17:39

+3

@CodyGray不是每个开发者都有相同的PC设置,并且存在相对路径不起作用的情况,例如,第三方库。它们在硬盘上只存在一次,而不是每个源存储库。 – pesche 2012-01-13 16:26:49

回答

3

一个可能的解决方案是在您的项目文件中提供的缺省值。

在项目文件中定义此变量时,可以通过使用Condition属性来完成此操作,以指示仅当该属性没有值时才使用该属性。

例如,如果ToolsPath是你的环境变量,你可以将此代码添加到您的项目文件:

<ToolsPath Condition="'$(ToolsPath)' == '' "> 
    C:\Tools 
</ToolsPath> 

MSDN Reference

相关问题