zoukankan      html  css  js  c++  java
  • Vs2012在Linux开发中的应用(5):项目属性的定义

    VS的项目属性表实际上是由一系列的XML文件定义的,都存放在C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V1102052文件夹下。我们全然能够仿照它们的定义加入自己的属性页。

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

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

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

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

        <PropertyPageSchemaCondition="'$(ConfigurationType)' != 'Utility'" Include="2052gnu.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>

    也就是说我们的配置已经正确保存下来了。
  • 相关阅读:
    数据结构 字符串的长度
    滚动条
    git push 一直卡在 writing objects 然后 就提交失败 提示:unexpected-disconnect-while-reading-sideband-packet
    vue中的防抖和节流
    html5中output元素详解
    手写 apply call bind 三个方法
    js中的陷阱!!!
    display:inline-block元素之间空隙的产生原因和解决办法
    git push到Gitee的时候上传不成功,可能是本地文件夹与远程仓库不同步
    axios没有实现jsonp这个功能,基于axios自己扩展一个
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5253356.html
Copyright © 2011-2022 走看看