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. css--字体和文本样式

    文字样式属性 字体:font-family 文字大小:font-size 文字颜色:font-color 文字粗细:font-weight 文字样式:font-style font-family字体属 ...

  2. mybaits2-Dao开发

    项目结构: 1.创建project,导入相关依赖(前提).配置db.properties与mybaits-config #mysql驱动 db.driver=com.mysql.jdbc.Driver ...

  3. ImportError: pycurl: libcurl link-time ssl backend (nss) is different

    reference pip uninstall pycurl export PYCURL_SSL_LIBRARY=nss easy_install pycurl

  4. luogu P3353 在你窗外闪耀的星星

    问题:天空可以理解为一条数轴,在这条数轴上分布着许多颗星星,对于每颗星星都有它的位置Xi和自身的亮度Bi.而窗户所能看到的范围是一个给出的参数W,我们看到的星星也包括窗户边缘的星星.现在,要你求出调整 ...

  5. POJ - 3126 - Prime Path(BFS)

    Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...

  6. docker-machine 快速搭建docker环境

    环境:腾讯云测试成功 1.条件:本地主机A和远程主机B 2.远程主机B,配置免密登录 1,在本地主机A上生成公钥和私钥,生成命令:ssh-keygen -t rsa 私钥:id_rsa 公钥:id_r ...

  7. python3.6以上 asyncio模块的异步编程模型 async await语法

    这是python3.6以上版本的用法,本例是python3.7.2编写使用asyncio模块的异步编程模型,生产这消费者,异步生产,用sleep来代替IO等待使用async和await语法来进行描述a ...

  8. Linux基础测试

    目 录 第1章 文件及目录课后作业    1 第2章 Linux打包与压缩习题    1 第3章 Linux系统VIM编辑器习题    1   文件及目录课后作业 从/proc/meminfo中过滤出 ...

  9. Linux项目发布流程

    Linux项目发布流程(一) 1.安装pyhton3.7 的依赖包 yum -y groupinstall "Development tools" yum -y install z ...

  10. idea 中使用 出现 svn: E155036

    在idea中使用svn  checkout时  svn出现如上错误. 原因本地的工作副本太旧.command line进入本地工作副本的根目录,执行svn upgrade后 重启idea就可以了.