如何在VC ++中的解决方案中定义全局设置?

时间:2008-12-18 06:51:27

标签: visual-studio visual-c++ visual-studio-2008

我有许多解决方案,其中包含大量项目。我希望能够为所有项目使用的解决方案定义全局设置。例如,包含目录。我希望能够在一个地方为解决方案中的所有项目更改include目录。

当我搜索解决方案时,我找到了matches mine exactly问题的良好描述,但解决方案建议在那里,项目属性表是按项目而不是每个解决方案定义的。

我可以使用环境变量或Visual Studio设置,但是那些需要编译代码的人必须定义完全相同的设置。

有人可以建议一种方法吗?感谢。

5 个答案:

答案 0 :(得分:15)

我们使用属性表来完成此任务。可以将单个属性表分配给解决方案中的所有项目。从那时起,您可以更改该属性表中的设置,它将影响所有项目。

高级提示:我们实际上使用了多个属性表(例如,一个用于发布目标类型,一个用于调试目标类型)。小费是订单非常重要。如果您手动编辑项目文件,则最后一个属性表将覆盖列表中先前属性表中的设置。如果您在GUI中进行编辑,则TOP将覆盖其下方的那些。

答案 1 :(得分:2)

正如其他人所建议的,物业单可以做你想要的。诀窍是使用InheritedPropertySheets,就像在C ++中使用#include一样。注意:项目文件和属性表文件的XML略有不同。这是两个项目(prjA.vcprojprjB.vcproj)的设计和简化示例,包括相同的属性表(sln.vsprops),其本身包含另一个(strict.vsprops):

<强> strict.vsprops

<VisualStudioPropertySheet ...>
    <Tool Name="VCCLCompilerTool" WarningLevel="3" WarnAsError="true"/>
</VisualStudioPropertySheet>

<强> sln.vsprops

<VisualStudioPropertySheet ... InheritedPropertySheets=".\strict.vsprops">
    <Tool
        Name="VCCLCompilerTool"
        PreprocessorDefinitions="NOMINMAX=1"
        RuntimeTypeInfo="true"
    />
</VisualStudioPropertySheet>

<强> prjA.vcproj

<VisualStudioProject ...>
    <Configurations>
        <Configuration ... InheritedPropertySheets=".\sln.vsprops">
        </Configuration>
    </Configurations>
    ...
</VisualStudioProject>

<强> prjB.vcproj

<VisualStudioProject ...>
    <Configurations>
        <Configuration ... InheritedPropertySheets=".\sln.vsprops">
        </Configuration>
    </Configurations>
    ...
</VisualStudioProject>

您可能还会发现this question及其答案很有用。

答案 2 :(得分:1)

也许您可以将MSBuild文件添加到您定义了许多共享属性的解决方案中,然后将<Import>文件添加到所有真实项目中?

也就是说,在“设置”MSBuild文件中,您可以定义许多属性:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WinUnitIncludeDir>C:\Includes\WinUnit</WinUnitIncludeDir>
        <!-- Other shared properties go here -->
    </PropertyGroup>
</Project>

从您的真实项目中,您可以参考:

<Project ...>
    ...
    <Import Project="path/to/settings.msbuild" />
    ...
    <Configurations>
        <Configuration ...>
            <Tool Name="VCCLCompilerTool"
                  ...
                  AdditionalIncludeDirectories="$(WinUnitIncludeDir)"
                  ... />
            ...
        ...
    ...
</Project>

答案 3 :(得分:1)

根据建议,您应该查看Property Sheets(又名.vsprops文件) 我写了一篇关于此功能的简短介绍here

答案 4 :(得分:0)

前段时间我搜索的内容完全相同,但未找到我想要的内容。

唯一可能接近此功能的是Property Sheets。这不完全是全球性的,因为它由项目拥有并被其他人使用。