如何在VS2010项目中为变量提供默认值?
问题描述:
我使用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>
答
一个可能的解决方案是在您的项目文件中提供的缺省值。
在项目文件中定义此变量时,可以通过使用Condition
属性来完成此操作,以指示仅当该属性没有值时才使用该属性。
例如,如果ToolsPath
是你的环境变量,你可以将此代码添加到您的项目文件:
<ToolsPath Condition="'$(ToolsPath)' == '' ">
C:\Tools
</ToolsPath>
你为什么决定这样的环境变量是正确的解决方案? – 2012-01-13 13:17:39
@CodyGray不是每个开发者都有相同的PC设置,并且存在相对路径不起作用的情况,例如,第三方库。它们在硬盘上只存在一次,而不是每个源存储库。 – pesche 2012-01-13 16:26:49