Visual Studio:自定义项目变量

30

Visual Studio提供了很多可以在IDE中使用的$变量,例如$(SolutionDir)。那么,如何创建自己的变量,例如$(MY_INCLUDES_DIR)(可以由项目的用户设置指向他们的头文件)?这是可能的吗?

4个回答

21

我知道这对于VS 2010有效:

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

继承属性表的任何项目配置都将像VS自己定义一样看到您的宏,即它将显示在宏列表中。 您项目的用户只需转到某个基本属性表,并在单个位置编辑MY_INCLUDES_DIR(使用您的示例)。

希望这可以帮助到您。

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


虽然文件格式有所不同,并且文件名扩展名于 2010 年从 vsprops 更改为 props,但 Visual Studio 2008 中也存在此功能。属性表仅适用于C++项目。 - WaffleSouffle
我通过修改 .vcxproj 文件添加了一个没有属性文件的 UserMacro,添加了 <PropertyGroup Label="UserMacros"> 和 <ItemGroup>/<BuildMacro>,就像在属性文件中一样。在我看来,如果您不需要在项目之间共享 UserMacro,则此方法更好。如果有人知道如何在 GUI 中完成此操作而无需修改 .vcxproj 文件,请告诉我。(VS2017) - Captain Normal

7

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

5
您可以按照以下任何解决方案进行操作。
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解决方案。这种方法的优点是所有项目都可以使用相同的环境变量。
2. 在Visual Studio项目文件中的PropertyGroup中定义xml标记。您可以使用带有“UserMacros”标签的现有PropertyGroup来实现此目的,默认情况下为空。
<PropertyGroup Label="UserMacros">
    <!-- Add the following line. -->
    <MY_INCLUDES_DIR>D:\MyIncludes\</MY_INCLUDES_DIR>
</PropertyGroup>
  1. 创建一个名为MY_INCLUDES_DIR的系统环境变量。

  2. 打开Visual Studio,选择菜单栏的视图(View)->属性管理器(Property Manager)。 选择项目、平台和配置,右键单击Microsoft.Cpp.x64.user,然后转到用户宏(User Macros)选项卡,并点击添加宏(Add Macros)

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


0

我刚刚也需要做相同的事情。我有三种解决方案,其中包括一个公共项目。每个解决方案都需要使用略有不同的设置来构建公共项目。

发现可以通过项目属性表格轻松完成此操作。为您想要更改的设置创建属性表格文件并将其保存在解决方案目录中。在文本编辑器中打开项目文件(或在VS中使用“打开方式\源代码文本编辑器”),找到属性表格的目录路径。对其进行修改,使其使用路径“$(SolutionDir)”。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接