【发布时间】:2010-11-22 20:19:26
【问题描述】:
Visual Studio 提供了很多$ 变量,可以在IDE 内部使用,例如$(SolutionDir)。如何创建自己的变量,例如$(MY_INCLUDES_DIR)(项目用户可以设置指向他们的标题)?有没有可能?
【问题讨论】:
标签: visual-studio
Visual Studio 提供了很多$ 变量,可以在IDE 内部使用,例如$(SolutionDir)。如何创建自己的变量,例如$(MY_INCLUDES_DIR)(项目用户可以设置指向他们的标题)?有没有可能?
【问题讨论】:
标签: visual-studio
我知道这适用于 VS 2010:
如果您有属性表,则在“通用属性”树下有一个名为“用户宏”的部分。您可以创建自己的 $(MyNamedVariable) 宏,甚至可以根据其他 $(SomeExistingMacro) 来定义它。如果您以前没有玩过属性表,请在视图菜单下查找“属性管理器”,它可以让您创建和编辑它们。
任何继承属性表的项目配置都会看到您的宏,就好像 VS 自己定义了它一样,即它会显示在宏列表中。您项目的用户只需转到一些基本属性表,然后在一个地方编辑 MY_INCLUDES_DIR(以使用您的示例)。
希望这会有所帮助。
(如何创建属性表?见http://msdn.microsoft.com/en-us/library/5k4a0033.aspx。查看->其他窗口->属性管理器)
【讨论】:
我创建了一个属性样式表,以指定哪个 Python(和 SCons),现在在我的 vcxproj 中,我可以通过将 $(PythonIncludeDir) 添加到附加包含属性来包含 Python 包含目录。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<PythonDir>C:\Python27_64</PythonDir>
<PythonExe>$(PythonDir)\python.exe</PythonExe>
<PythonIncludeDir>$(PythonDir)\include</PythonIncludeDir>
<PythonLibDir>$(PythonDir)\libs</PythonLibDir>
<SCons>$(PythonExe) $(PythonDir)\Scripts\scons.py</SCons>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="PythonDir">
<Value>$(PythonDir)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PythonExe">
<Value>$(PythonExe)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PythonIncludeDir">
<Value>$(PythonIncludeDir)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PythonLibDir">
<Value>$(PythonLibDir)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="SCons">
<Value>$(SCons)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
【讨论】:
您可以按照如下所述的任何解决方案进行操作。
在批处理文件中设置环境变量。创建一个批处理文件并插入如下代码:
set MY_INCLUDES_DIR=D:\MyIncludes
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" D:\MySolution.sln
然后通过双击此文件启动 Visual Studio 解决方案。这种方法的一个优点是所有项目都可以使用相同的环境变量。
<PropertyGroup Label="UserMacros">
<!-- Add the following line. -->
<MY_INCLUDES_DIR>D:\MyIncludes\</MY_INCLUDES_DIR>
</PropertyGroup>
创建一个名为MY_INCLUDES_DIR的系统环境变量。
转到查看(菜单栏)-> 物业管理器。 选择项目,选择平台和配置,右键点击Microsoft.Cpp.x64.user然后进入User Macros标签并点击Add Macros .
无论您选择选项 1、2、3 还是 4,您都可以在 Visual Studio 项目文件中引用 $(MY_INCLUDES_DIR)。
【讨论】:
只需要做同样的事情。我有三个解决方案,其中包括一个通用项目。每个解决方案都需要使用稍微不同的设置来构建通用项目。
发现这可以使用项目属性表轻松完成。为要更改的设置创建属性表文件并将其保存在解决方案目录中。在文本编辑器中打开项目文件(或在 VS 中使用 Open With \ Source Code Text Editor)并找到属性表的目录路径。修改它,使使用的路径是'$(SolutionDir)'。
您现在拥有一个加载解决方案特定属性表的 Visual Studio 项目。
【讨论】: