【问题标题】:Visual Studio: custom project variablesVisual Studio:自定义项目变量
【发布时间】:2010-11-22 20:19:26
【问题描述】:

Visual Studio 提供了很多$ 变量,可以在IDE 内部使用,例如$(SolutionDir)。如何创建自己的变量,例如$(MY_INCLUDES_DIR)(项目用户可以设置指向他们的标题)?有没有可能?

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

    我知道这适用于 VS 2010:

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

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

    希望这会有所帮助。

    (如何创建属性表?见http://msdn.microsoft.com/en-us/library/5k4a0033.aspx。查看->其他窗口->属性管理器)

    【讨论】:

    • 这也出现在 Visual Studio 2008 中,尽管文件的格式不同,并且文件扩展名在 2010 年从 vsprops 更改为 props。属性表仅适用于 C++ 项目。
    • 我通过破解 .vcxproj 文件添加了一个没有属性文件的 UserMacro,在属性文件中添加了一个 和一个 /。如果您不需要在项目之间共享 UserMacro,恕我直言,效果会更好。如果有人知道如何在 GUI 中执行此操作而不破解 .vcxproj 文件,我很想听听。 (VS2017)
    【解决方案2】:

    我创建了一个属性样式表,以指定哪个 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>
    

    【讨论】:

      【解决方案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

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

      1. 在 PropertyGroup 内的 Visual Studio 项目文件中定义 xml 标记。可用于此目的的一个预先存在的 PropertyGroup 是带有“UserMacros”标签的属性组,默认情况下为空。
      <PropertyGroup Label="UserMacros">
          <!-- Add the following line. -->
          <MY_INCLUDES_DIR>D:\MyIncludes\</MY_INCLUDES_DIR>
      </PropertyGroup>
      
      1. 创建一个名为MY_INCLUDES_DIR的系统环境变量。

      2. 转到查看(菜单栏)-> 物业管理器。 选择项目,选择平台和配置,右键点击Microsoft.Cpp.x64.user然后进入User Macros标签并点击Add Macros .

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多