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="/"
"
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>

也就是说我们的配置已经正确保存下来了。

Vs2012在Linux开发中的应用(5):项目属性的定义的更多相关文章

  1. Vs2012在Linux开发中的应用(1):开发环境

    在Linux的开发过程中使用过多个IDE.code::blocks.eclipse.source insight.还有嵌入式厂商提供的各种IDE.如VisualDsp等,感觉总是不如vs强大好用.尽管 ...

  2. Vs2012在Linux开发中的应用(6):改写Makefile项目的Build过程

    MSBUILD的编译过程实际上是依据一系列的targets文件定义的.当我们在IDE运行生成.批生成.清理命令的时候.VS会查找这些命令相应的Task并运行它,以下我们逐个分析这个过程. 当运行生成操 ...

  3. ios开发中button控件的属性及常见问题

    最为最基本的控件,我们必须对button的每个常用属性都熟练应用: 1,使用之前,必须对按钮进行定义,为乐规范,在@interface ViewController (){}中进行定义,先定义后使用. ...

  4. Vs2013在Linux开发中的应用(19): 启动gdb

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 1.1    载入调试引擎 因为我们无法干预VC的调试引擎载入.但能够侦听VC的调试引擎载入事件, ...

  5. 4、linux开发中常用指令

    1.cat /proc/device 可以查看各个全部字符设备和块设备,在register_chrdev中设置的名字在打印出来的信息中可以看到:2.top 可以看各个应用程序占用CPU量及PID等信息 ...

  6. linux开发中常用的命令及技巧(连载)

    1.在内核或uboot目录下搜索相关内容/文件名时:grep "USB" * -nR find -name "*USB*" 2.查看系统中设备 cat  /pr ...

  7. Android开发中XML布局的常用属性说明

    <!-- 常用属性说明: android:id="@+id/button" 为控件指定Id android:text="NNNNNNNNNN" 指定控件的 ...

  8. linux内核中ip,tcp等头的定义(转)

    一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6];    //目的m ...

  9. Vs2012在Linux应用程序开发(3):加入新平台hi3516

    下面我们将VS2012添加一个新的平台支持,由于近来与哈斯hi3516.就选它吧! 1.1     复制平台文件 原来一直认为要让VS支持一个新的平台须要编写代码,某天在看MSBUILD文件夹的时候突 ...

随机推荐

  1. 字符串类型:str, bytes 的区别

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分. 文本总是 Unicode,由 str 类型表示, 二进制数据则由 bytes 类型表示. Python 3不会以任意隐式的方 ...

  2. zeromq编译与应用

    libzmq是c++语言开发的,正式版本在这里: https://github.com/zeromq/libzmq/releases 到这篇文件发布为止,正式稳定版是4.2.2 1,按照给出的链接下载 ...

  3. JavaSE-25 AWT

    学习要点 关于AWT AWT容器 布局管理器 AWT组件 事件处理 关于AWT java.awt包与子包 AWT软件包 说明 import  java.awt.*; 基本组件使用工具 import  ...

  4. 【转载】form表单的两种提交方式,submit和button的用法

    1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在jsp的前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的 ...

  5. 数组合并--php

    常用的合并数组方法有以下几种: 1  array_merge 2  '+' 3  array_merge_recursive 下面是一段对比的代码 $array1 = array(2,4," ...

  6. python入门-PyCharm中目录directory与包package的区别及相关import详解

    一.概念介绍 在介绍目录directory与包package的区别之前,先理解一个概念---模块 模块的定义:本质就是以.py结尾的python文件,模块的目的是为了其他程序进行引用. 目录(Dict ...

  7. java 图片合成文字或者awt包下的对话框引入自定义字体库

    成就卡图片字体问题:1.下载 xxx.ttf 文件2.mkdir /usr/local/jdk1.6.0_11/jre/lib/fonts/fallback.     在jre/lib/fonts 下 ...

  8. 解决mysql - 1577 问题

    背景:通过navicat连接mysql使用events时报如下错误 登录mysql查询event mysql> use zhk4; Database changed mysql> show ...

  9. logging日志模块配置

    logging日志模块 日志级别 日志一共分成5个等级,从低到高分别是: 1)DEBUG 2)INFO 3)WARNING 4)ERROR 5)CRITICAL 说明: DEBUG:详细的信息,通常只 ...

  10. java.sql.SQLException: Data truncated for column 'lastSeason' at row 1

    在使用项目将数据存储到 datetime 的字段 ,抛出了这个异常 而我是使用Java.util.Date 存储过去的 解决代码如下: Date date = new Date(); demo.set ...