怎样使用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)来管理工程的更多相关文章

  1. Qt Creator 源码学习笔记03,大型项目如何管理工程

    阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...

  2. 用workspace管理工程,并解决多静态库依赖

    from:http://www.cnblogs.com/perryxiong/p/3759818.html   最近我在项目中遇到一些工程之间的管理问题. 模型: 其中 库A 是一个公共的基础静态库, ...

  3. OpenCV使用Cmake来管理工程

    写篇入门级别的文章,对于配置OpenCV很多人不知道有这种方法,其实这种方法在OpenCV编译过程中已经使用到的了,如果有手动编译OpenCV经验的同学可以很快的学会这种工程管理方法 方法优点,只要有 ...

  4. Notepad++ 管理工程--转载

    http://blog.csdn.net/cashey1991/article/details/7001385 @1.首先从下面这个菜单打开工程panel @2.在工程panel的“Workspace ...

  5. RTT工程管理

    一.RTT工程管理 RTT采用SCons管理工程. 本次安装版本:Python-2.7.3.1.exe,python-2.7.11.msi,scons-2.3.1-setup.exe 安装完成后,需要 ...

  6. 将你的静态工程用Grunt管理

    最近写了一个静态页面,写完之后都会上传到静态服务器上.但是我遇到一个问题,就是每次修改文件后就要重新找一些代码压缩网站去压缩静态文件.有没有什么办法能够自动化的处理呢?答案当然是肯定的. 我们可以借用 ...

  7. 从零自学Hadoop(09):使用Maven构建Hadoop工程

    阅读目录 序 Maven 安装 构建 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Source ...

  8. 【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程

    参考链接:http://blog.sina.com.cn/s/blog_4f925fc30102ed5b.html 大前提:在执行mvn eclipse:eclipse命令之前一定要先存在一个含有po ...

  9. 【转】前端工程筹建NodeJs+gulp+bower

    转自:http://www.myexception.cn/javascript/1781968.html npm nodejs 安装过程中会自动安装npm,nodejs安装程序会在环境变量中添加两个变 ...

随机推荐

  1. 对 /dev/shm 认识

    一./dev/shm理论 /dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里.因此在linux下,就不需要大费周折去建 ramdisk,直接使用/dev/shm/ ...

  2. Objective-C与Java类的一些区别

    Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码 #import <Foundation/Foundation.h> /* * 声明一个Pe ...

  3. An internal error occurred during: "Retrieving archetypes:". GC overhead limit exceeded

    An internal error occurred during: "Retrieving archetypes:".GC overhead limit exceeded 异常, ...

  4. [转]django-registration quickstart

    Basic configuration and use--------------------------- Once installed, you can add django-registrati ...

  5. Eclipse中配置javap命令

    Run→External Tools→External Tools Configurations-进入如下图二所示的Program配置界面.也可以通过如下图一所示的工具栏按钮进入Program配置界面 ...

  6. 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash(一现象)

    一.现象:iPhone真机打开Voice Over的情况下,iPhone QQ空间工程,Xcode 真机编译启动必Crash,main函数里面 NSSetUncaughtExceptionHandle ...

  7. Java基本语法-----java运算符的优先级与结合性

    这是本人以前的上学期间java 运算符这块知识的总结的,截图存到了word里,大家将就看下吧(不会用Markdown的表格 不然就在写一遍了 T T). [正在看本人博客的这位童鞋,我看你气度不凡,谈 ...

  8. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...

  9. Spark技术内幕: Shuffle详解(三)

    前两篇文章写了Shuffle Read的一些实现细节.但是要想彻底理清楚这里边的实现逻辑,还是需要更多篇幅的:本篇开始,将按照Job的执行顺序,来讲解Shuffle.即,结果数据(ShuffleMap ...

  10. 2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl

     1.新建一个空项目(其它项目->空QT项目): 2  添加新文件(选择C++Class) MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H ...