怎样使用projectproperty sheet(.vsprops)来管理工程
怎样使用projectproperty sheet(.vsprops)来管理工程
IDE:VS2005
前言
Project Property Sheet的意思是项目属性表,在大型项目中基本上都会使用。一般来说,在一个大型项目中,对于每个工程来说,很多属性设置是完全相同的,譬如公共头文件路径,公共通用函数/库,公共静态链接库,相同的编译优化选项等等,很多。而工程数目可能上则十数个,多则上百个,一个个的去配置工程属性,工作量大不说,还很容易配错,而使用项目属性表则可以明显减少工程的错误设置,明显减少工程的重复设置,显著降低程序员的工作量(虽然很多地方是项目经理统一配置的),本文主要讲述项目属性表的使用方法。
注:本文的截图以集成开发环境VS2005为例。
方法流程
通过菜单->View->Property Manager打开属性管理器。
在任一工程上面点击鼠标右键,选择“Add New Project Property Sheet…”。
在弹出对话框里面输入属性文件名和存放路径,一般为了统一管理,建议放一个统一的公共目录(因为属性文件可能有多个),然后点击“Add”按钮。
此时左边的侧边栏会生成相应的属性文件选项(按上图的输入会生成DetoursResearch),相应目录也会生成项目属性文件DetoursResearch.vsprops。
双击侧边栏上面刚刚新增加的属性文件项,即可进行编辑操作。编辑操作比较简单,和配置一个普通工程差不多,唯一需要注意的就是,项目属性表里面的配置应该是所有工程(或者说大部分工程)都相同的部分,否则如果只有几个工程可以使用,就失去意义了。
一般来说,Debug版本和Release版本的配置不一样,EXE、DLL和StaticLib的配置也可能不一样,而一个大型项目里面,这些元素可能是同时存在,因此可能需要的属性表就多达上十个。管理上面就需要严格控制。
再看在其它的工程里面怎么使用,其实使用很简单,把项目属性表的文件路径设置给相关工程的“继承项目属性表”(inherited project property sheets)即可,马上就可以使用了。是不是感觉很赞!
注意事项
1、项目属性表配置好之后记得保存,否则可能丢失刚刚的配置。
2、另外一个使用属性表的方式是在配置属性页面选择“Add Existing Project Property Sheet…”,点选一个项目属性文件,效果和上面介绍的一样。
3、如果有多个项目属性表,相互之间会冲突吗?不会,按照优先级来,优先级在项目属性配置页面里面体现,越上面的项目属性表,优先级越高。可以通过在属性表上面点鼠标右键,通过菜单命令“move up”,和“move down”来调整。下图有三个属性表属于系统属性表,是不能删除,不能编辑,也不能调整优先级的。
参考文档
[1] How to: Add New Property Sheets toC++ Projects https://msdn.microsoft.com/en-us/library/5k4a0033(v=vs.80).aspx
[2] Inherited Properties and PropertySheets http://blogs.msdn.com/b/vsproject/archive/2009/06/23/inherited-properties-and-property-sheets.aspx
怎样使用projectproperty sheet(.vsprops)来管理工程的更多相关文章
- Qt Creator 源码学习笔记03,大型项目如何管理工程
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...
- 用workspace管理工程,并解决多静态库依赖
from:http://www.cnblogs.com/perryxiong/p/3759818.html 最近我在项目中遇到一些工程之间的管理问题. 模型: 其中 库A 是一个公共的基础静态库, ...
- OpenCV使用Cmake来管理工程
写篇入门级别的文章,对于配置OpenCV很多人不知道有这种方法,其实这种方法在OpenCV编译过程中已经使用到的了,如果有手动编译OpenCV经验的同学可以很快的学会这种工程管理方法 方法优点,只要有 ...
- Notepad++ 管理工程--转载
http://blog.csdn.net/cashey1991/article/details/7001385 @1.首先从下面这个菜单打开工程panel @2.在工程panel的“Workspace ...
- RTT工程管理
一.RTT工程管理 RTT采用SCons管理工程. 本次安装版本:Python-2.7.3.1.exe,python-2.7.11.msi,scons-2.3.1-setup.exe 安装完成后,需要 ...
- 将你的静态工程用Grunt管理
最近写了一个静态页面,写完之后都会上传到静态服务器上.但是我遇到一个问题,就是每次修改文件后就要重新找一些代码压缩网站去压缩静态文件.有没有什么办法能够自动化的处理呢?答案当然是肯定的. 我们可以借用 ...
- 从零自学Hadoop(09):使用Maven构建Hadoop工程
阅读目录 序 Maven 安装 构建 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Source ...
- 【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程
参考链接:http://blog.sina.com.cn/s/blog_4f925fc30102ed5b.html 大前提:在执行mvn eclipse:eclipse命令之前一定要先存在一个含有po ...
- 【转】前端工程筹建NodeJs+gulp+bower
转自:http://www.myexception.cn/javascript/1781968.html npm nodejs 安装过程中会自动安装npm,nodejs安装程序会在环境变量中添加两个变 ...
随机推荐
- Mybatis源码分析--关联表查询及延迟加载(一)
Mybatis提供了关联查询映射的功能. 一.一对一关联
- iOS开源加密相册Agony的实现(七)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- MySQL注释中的sql也可能执行
MySql支持三种注释形式:# 和–属于单行注释,注释范围为该行的结尾:/* */注释属于多行注释,此外该种注释还可以实现行内注释.具体的使用情况如下图中所示(四种使用情形): 除此之外,/* */这 ...
- Android Lollipop 5.0 经典新特性回顾
*Tamic 专注移动开发! 更多文章请关注 http://blog.csdn.net/sk719887916 虽然Android已到了7.0 ,但是我们还是不能忘怀视觉革命性改变的5.0,今天回顾下 ...
- sum,filter和map参数里面的玄机
首先是sum函数. 最常见的用法似乎是: >>> sum([1,2,3]) 6 但其实这是默认首个元素是数字0.我们可以指定其他数字: >>> sum([1,2,3 ...
- activiti 多实例任务
1.1.1. 前言 个人,那么当5个人都投票的时候大概分为如下几种: 1.部门所有人都去投票,当所有人都投票完成的时候,这个节点结束,流程运转到下一个节点.(所有的人都需要投票) 2.部门所有人都去投 ...
- FORM的静态提交
在form中进行保存时,如果使用commit_form的话会弹出信息提示"没有修改需要保存"或者"几条记录已保存"类似的字样,有时候不想被提示,可以使用A ...
- SSH网上商城---邮件发送
注册网站账号的时候,都需要发送激活邮件,然后让注册的用户点击激活链接方可完成注册,不过话说回来,为什么注册的时候需要发送邮件呢?为什么不注册的时候直接激活呢?一定要收一封激活帐号的邮件?网站这样做的好 ...
- UNIX环境高级编程——创建孤儿进程
/* 创建孤儿进程 父进程终止后,向子进程发送挂断信号,又接着发送继续信号. */ #include <stdio.h> #include <stdlib.h> #includ ...
- 搜索----Android Demo
在前面的博客中,小编简单的介绍了,点击发现按钮,自动加载热门的相关数据,成长的脚步从不停歇,完成了发现的功能,今天我们来简单看一下如何在搜索栏中输入关键字,搜索出我们所需要的信息,今天这篇博文小编就简 ...