Visual Studio:自定义项目变量

时间:2010-11-22 20:19:26

标签: visual-studio

Visual Studio提供了许多可以在IDE中使用的$变量,例如$(SolutionDir)。如何创建自己的变量,例如$(MY_INCLUDES_DIR)(可以由项目用户设置指向其标题)?它甚至可能吗?

5 个答案:

答案 0 :(得分:14)

我知道这适用于VS 2010:

如果您有属性表,则在“公共属性”树下有一个名为“用户宏”的部分。您可以创建自己的$( MyNamedVariable )宏,甚至可以使用其他$( SomeExistingMacro )来定义它。如果您之前没有使用过属性表,请查看视图菜单下的“属性管理器”,它将允许您创建和编辑它们。

任何继承属性表的项目配置都会看到你的宏,好像VS已经自己定义了它,即它会显示在宏列表中。您的项目的用户可以只去一些基本属性表,并在一个地方编辑MY_INCLUDES_DIR(以使用您的示例)。

希望这有帮助。

(如何创建属性表?请参阅http://msdn.microsoft.com/en-us/library/5k4a0033.aspx。查看 - >其他Windows-> Property Manger)

答案 1 :(得分:13)

您可以在Project Properties-> Debugging-> Environment中创建环境变量。即使它们没有显示在宏列表中(因为它们是自定义的而不是内置的),您仍然可以使用它们。

答案 2 :(得分:3)

我创建了一个属性样式表,以指定哪个Python(和SCons),现在在我的vcxproj中,我可以通过将$(PythonIncludeDir)添加到其他包含属性来包含Python include dir。

<?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>

答案 3 :(得分:3)

您可以按照以下说明执行任何解决方案。

  1. 在批处理文件中设置环境变量。创建批处理文件并插入如下代码:

    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

  2. 然后双击此文件启动Visual Studio解决方案。这种方法的一个优点是所有项目都可以使用相同的环境变量。

    1. 在PropertyGroup中的Visual Studio项目文件中定义xml标记。您可以用于此目的的一个预先存在的PropertyGroup是带有标签&#34; UserMacros&#34;的PropertyGroup,默认为空。
    2. <PropertyGroup Label="UserMacros">
          <!-- Add the following line. -->
          <MY_INCLUDES_DIR>D:\MyIncludes\</MY_INCLUDES_DIR>
      </PropertyGroup>
      
      1. 创建名为MY_INCLUDES_DIR的系统环境变量。

      2. 转到查看(菜单栏) - &gt; 物业经理。 选择项目,选择平台和配置,右键单击 Microsoft.Cpp.x64.user ,然后转到用户宏选项卡,然后单击添加宏

      3. 无论选择选项1,2,3还是4,都可以在Visual Studio项目文件中引用$(MY_INCLUDES_DIR)

答案 4 :(得分:0)

只需要做同样的事情。我有三个解决方案,包括一个共同的项目。每个解决方案都需要使用稍微不同的设置来构建公共项目。

发现这可以使用Project Property Sheets轻松完成。为要更改的设置创建属性表文件,并将其保存在解决方案目录中。在文本编辑器中打开Project文件(或在VS中使用Open With \ Source Code Text Editor),找到属性表的目录路径。修改它以便使用的路径为&#39; $(SolutionDir)&#39;。

您现在有一个Visual Studio项目,可以加载特定于解决方案的属性表。