Vs2012在Linux开发中的应用(5):项目属性的定义
来源:互联网 发布:数据图表分析 编辑:程序博客网 时间:2024/05/20 00:13
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>
也就是说我们的配置已经正确保存下来了!- Vs2012在Linux开发中的应用(5):项目属性的定义
- Vs2012在Linux开发中的应用(4):公共属性的定义
- Vs2012在Linux开发中的应用(6):改写Makefile项目的Build过程
- Vs2012在Linux开发中的应用(1):开发环境
- Vs2012在Linux开发中的应用(2):方案设计
- Vs2012在Linux开发中的应用(8): 编译Linux内核
- Vs2012在Linux开发中的应用(7): 编译UBOOT
- Vs2012在Linux开发中的应用(9): 编译应用程序
- Vs2012在Linux开发中的应用(10): 参数转换
- Vs2012在Linux开发中的应用(11): 编译单个文件
- Vs2012在Linux开发中的应用(12): 编译静态库
- Vs2012在Linux开发中的应用(13): 添加对x86 Linux的支持
- Vs2012在Linux开发中的应用(15): 添加可用的调试器
- Vs2012在Linux开发中的应用(3):添加新平台hi3516
- svn的外部定义在项目中的应用
- 敏捷开发在项目中的应用心得
- 类模板在项目开发中的应用
- cocos2dx3.0的项目属性继承 (vs2012)
- crc32(),md5(),sha1()函数的简要理解与分析
- Codeforces Round #277.5 (Div. 2) B
- 龙江8千教师不满工资罢工
- UVA - 10905 Children's Game
- objective-c启用ARC时的内存管理 weak strong
- Vs2012在Linux开发中的应用(5):项目属性的定义
- 转:全面分析 Spring 的编程式事务管理及声明式事务管理
- [经典排序算法][集锦]
- 【小松教你手游开发】【unity实用技能】unity 二进制文件存放地址
- 使用google play services lib时 提示需要更新版本
- JPA总结
- spring tx:advice事务配置
- Xcode6中怎么添加空工程模板
- Android笔记五.Intent异常处理及常用系统调用