Vs2012在Linux开发中的应用(5):项目属性的定义

VS的项目属性表实际上是由一系列的XML文件定义的,都存放在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\2052目录下,我们完全可以仿照它们的定义添加自己的属性页。

首先在项目文件中导入自定义的目标:

  <Import Condition="$(Platform)=='hi3516'" Project=" EmbedLinux.targets" />

这里的EmbedLinux.targets是自己创建的文件,在这个目标文件中加上对xml文件的引用:

  <ItemGroupCondition="'$(UseDefaultPropertyPageSchemas)' != 'false'">

    <PropertyPageSchemaCondition="'$(ConfigurationType)' != 'Utility'" Include="2052\gnu.xml" />

  </ItemGroup>

我们的配置定义全部存放在gnu.xml文件中。

<?xmlversion="1.0" encoding="utf-8"?>

<!--Copyright, Microsoft Corporation, All rights reserved.-->

<RuleName="Gnu" PageTemplate="tool" DisplayName="GNU配置" SwitchPrefix="/" Order="20" xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">

  <Rule.Categories>

    <CategoryName="General" DisplayName="项目"/>

  </Rule.Categories>

  <Rule.DataSource>

    <DataSourcePersistence="ProjectFile" Label="Configuration" HasConfigurationCondition="true"/>

  </Rule.DataSource>

  <EnumPropertyName="GnuProjectType" DisplayName="GNU项目类型" Description="选择GNU项目所属的类型" Category="General">

    <EnumValueName="UBoot" DisplayName="uboot" Description="用以生成UBOOT项目。">

    </EnumValue>

    <EnumValueName="LinuxKernel" DisplayName="Linux内核" Description="这是一个Linux内核项目。">

    </EnumValue>

    <EnumValueName="LinuxMakeApp" DisplayName="Linux应用(Makefile" Description="这是一个使用Makefile开发的Linux应用程序。">

    </EnumValue>

  </EnumProperty>

  <StringPropertySubtype="folder" Name="SourceRoot" DisplayName="源码根目录" Description="使用相对路径表达的源码根目录。" Category="General">

  </StringProperty>

</Rule>

关闭VS再打开项目属性:

这里多了一个GNU配置项,在这个GNU配置中,我们可以根据自己的项目需求添加选项,VS将把这些选项保存到vcxproj项目文件中。在MSBUILD进行编译的时候,这些参数可以传递给我们自定义的编译任务。

需要注意的是,在这个xml文件中:

    <DataSourcePersistence="ProjectFile" Label="Configuration" HasConfigurationCondition="true"/>

这里的Label只能填写固定的值,如Configuration, ClCompile, Link等,如果是其它未在props文件中定义的属性值则配置无法正确显示。

在保存后可以发现vcxproj文件中多了这样的几行:

    <GnuProjectType>LinuxKernel</GnuProjectType>

    <SourceRoot>.</SourceRoot>

也就是说我们的配置已经正确保存下来了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值