Visual Studio 2010 C++ 属性设置基础

在 《Visual Studio 2010 C++ 工程文件解读》中提到了C++工程中可以进行用户自定义的属性设置,如何进行属性设置呢?

下面我们来了解一下 props 文件的基本规则:

1、在 PropertyGroup 元素中放置子元素就是定义属性,属性的值就是子元素的内容;例如

<PropertyGroup>
<OutputDriver>D:\</OutputDriver>
</PropertyGroup>

定义来一个属性 OutputDriver 值为 D:\

2、定义元素时可以通过条件来让属性定义在特定的条件下起作用,例如:

<PropertyGroup>
<SingleFolder Condition="‘$(SingleFolder)‘ == ‘‘">false</SingleFolder>
</PropertyGroup>

只有当 SingleFolder 属性没有定义或者定义的值为空时,将 SingleFolder 的属性定义为 false ; 如果属性组中只有一个属性,或者一个属性组中的多个属性有相同的条件,则可以把条件放置到 PropertyGroup 元素中;

3、条件表达式可以使用 "=="、"!=" 进行判断,也可以对数值进行“>”、“>=”、“<”、“<=”判断,并且可以对目录进行“Exists”和“HasTrailingSlash”判断,同时可以对表达式进行 “!” 或对多个表达式进行 “AND”、“OR”等操作,可以参考 http://msdn.microsoft.com/en-us/library/7szfhaft.aspx

4、值的定义可以进行继承,其实就是在原有的值的基础上增加新的值,如下所示:

<PropertyGroup Condition="Exists(‘$(ImportFolder)‘)">
<LibraryPath>$(ImportFolder);$(LibraryPath)</LibraryPath>
</PropertyGroup>

如果属性“ImportFolder”指定的目录存在,那么将该目录增加到“库”的搜索路径中,并且优先级在默认搜索路径的前面;

5、可以使用 .net 的函数进行判断或者属性值的定义,例如定义解决方案文件所在的驱动器可以使用如下的定义:

<PropertyGroup Condition="‘$(SolutionDriver)‘ == ‘‘" >
<SolutionDriver>$([System.IO.Path]::GetPathRoot($(SolutionDir)))</SolutionDriver>
</PropertyGroup>

6、可以使用 import 元素导入其他的属性设置文件,例如需要导入一个解决方案同名的属性文件:

<ImportGroup>
<Import Project="$(UserRootDir)\Microsoft.Cpp.Common.user.props" />
</ImportGroup>

说明:UserRootDir 是 C++ 默认属性文件中定义的属性,值为 $(LOCALAPPDATA)\Microsoft\MSBuild\v4.0\

7、如果导入的属性文件需要在 Visual Studio 2010 的 "属性管理器" (Property Manager)窗口中可以看到,那么在 ImportGroup 元素中增加特定的属性即可,如下所示:

<ImportGroup Label="PropertySheets">
<Import Project="$(ProjectPath).props" Condition="Exists(‘$(ProjectPath).props‘)" />
</ImportGroup>

则如果一个工程文件的目录下存在 .vcxproj.props 将导入该文件,例如工程文件为 MyProj.vcxproj 并且在工程目录下存在 MyProj.vcxproj.props文件则会自动导入文件 MyProj.vcxproj.props 属性文件

8、如果在 Property Manager 窗口中希望看到的属性文件名称不是文件名,而是自定的名称,那么可以再属性文件中增加一个特定的属性定义来实现,例如:

<PropertyGroup>
<_PropertySheetDisplayName>Cpp Common Properties</_PropertySheetDisplayName>
</PropertyGroup>

好了,基本规则我们已经掌握了(复杂的可以研究 VS2010 的 props 文件和查看 MSDN),下面来看看编译和链接的选项如何设置:

1、编译的选项放置在 ItemDefinitionGroup 元素的 ClCompile 子元素中,例如下面的定义:

<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>ISF_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderFile>ISF/Stable_Headers.h</PrecompiledHeaderFile>
<PrecompiledHeader>Use</PrecompiledHeader>
</ClCompile>
</ItemDefinitionGroup>

在这个定义中,首先增加来一个宏定义“ISF_BUILD_DLL”,然后是定义预编译头文件的名称“ISF/Stable_Headers.h”,而不是默认的“stdafx.h”,最后定义来预编译头文件的使用规则是“使用预编译头文件”,这就要求所有的C/C++文件必须在最前面包含头文件 “ISF/Stable_Headers.h”,除非在文件上指定不使用预编译头文件;

2、链接的选项放置在 ItemDefinitionGroup 元素的 Link 子元素中,例如下面的定义:

<ItemDefinitionGroup>
<Link>
<ProgramDatabaseFile>$(SymbolFolder)$(OutputName).pdb</ProgramDatabaseFile>
<ImportLibrary>$(ImportFolder)$(OutputName).lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>

在这个定义中,指定了输出的私有的 pdb 文件的输出全路径和动态库的导入库的输出全路径;

3、库的选项放置在 ItemDefinitionGroup 元素的 Lib 子元素中,例如下面的定义:

<ItemDefinitionGroup>
<Lib>
<LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
</Lib>
</ItemDefinitionGroup>

定义了静态库生成时的代码生成行为是“连接时代码生成”;

嗯,到了该结束的时候了,更多的选项还是留待读者自己研究发现吧....

时间: 2024-10-15 19:52:53

Visual Studio 2010 C++ 属性设置基础的相关文章

Visual Studio 2010 目录路径设置与团队开发

在开发过程中难免要引用头文件,库文件,以及设置程序的输出位置. 绝对路径 这些路径最简单的方式是写死,写成绝对路径. 绝对路径的问题在于你把项目拷贝到其他电脑,就不行了.因为别人机器上不一定有那个目录. 相对路径是比较好的!因为项目的工程代码无论放到哪里都可以直接编译运行. 相对路径 相对路径相对哪里?相对当前目录. 当前目录在哪里?vcprojc文件所在的目录就是当前目录. 注意不是sln文件所在的目录! 一个sln可以有多个project,每一个project项目的当前目录都是其对应的vcp

OPNET 14.5 + Windows 7 + Visual Studio 2010的一个设置问题

引用:https://groups.google.com/forum/#!msg/opnet/OmOI_bstjTI/GhP-PRhpxEEJ 1- Start-> all programs -> Microsoft Visual studio -> Visual Studio Tools -> then (either) visual studio comand prompt OR visual studio comand prompt x64 (DEPENDS ON YOUR

更改Visual Studio 2010/2012/2008的主题设置

一.更改主题: 主题网站:http://studiostyl.es/ Visual Studio 2010发布也已经有一段时间了,不过安装后默认的白底的主题长时间看代码可能会感觉眼睛酸痛,况且时间长了我们也希望能够换换口味,studiostyles这家主题网站则专门给我们提供了不同口味的Visual Studio主题样式,比如评分比较高的Son of Obsidian就是一款暗色调背景的主题,安装后将不会感觉到原来自带的那种白底界面的刺眼,可以有效的辅助我们长时间编程. 下载后,你将得到扩展名为

Visual Studio 2010 插件之Resharper

这一系列不是对每个功能的中文帮助,而是我对开发中可能涉及的功能需求,利用Resharper来完成.有些是Visual Studio有的,但是做的不好,有些是没有而Resharper发明的.总的目的都只有一个,就是加快你编写代码的速度.毕竟,我们的终极目标是在5点半前心满意足的关上电脑回家. 诚然,学会一个新的语言,或者一个新的工具,都有一个上手的问题.希望我的文章能够帮助你尽快地熟悉Resharper.在熟悉了它以后,你使用鼠标或者是无效击键的频率会大大地降低.当然这也需要对visual stu

【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级别的详细模型,并将它们彼此结合.测试然后发布到你的开发计划里. 在这个实验中, 我们将重点放在如何创建一系列简单的系统建模图形上. 每个练习应该在 30分钟内完成. Exercise 1 – 理解用户需求 绘制活动.类以及其他UML图形能帮助架构师清晰辨别客户的习惯.业务规则以及其他需求,从而使设计

Visual Studio 2010 单元测试之一---普通单元测试

原文:Visual Studio 2010 单元测试之一---普通单元测试 本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元测试,这是进行顺序测试.压力测试的基础.如果在Visual Studio 2010(2008)里面没有发现下图中的Test菜单,请用Visual Studio安装光盘进行安装,因为Visual Studio单元测试插件安装时可能不是默认选项. 测试之前,我们要准备一些测试代码.或者从下面的链接下载完

Visual Studio 2010 Ultimate 中对于VC++6 0的经典回归

Visual Studio 2010 Ultimate 中对于VC++6.0的经典回归 1. 工具箱中加入了大量BCG控件:2. 选项中原来全局的VC目录设置,现在作为一个属性页放在了工程属性框中,也就是说可以对每个工程设置不同的VC目录:3. 恢复了VC6.0中经典的类向导:4. 这个版本为英文版,但是可以根据创建工程中的语言选项,生成相应语言的代码注释:5. 在对话框设计界面中可以选择设置Mockup Image: Visual Studio 2010 的界面 项目生成向导 新工程向导 代码

获取设备列表(Microsoft Visual Studio 2010)

通常,编写基于WinPcap应用程序的第一件事情,就是获得已连接的网络适配器列表.libpcap和WinPcap都提供了 pcap_findalldevs_ex() 函数来实现这个功能: 这个函数返回一个 pcap_if 结构的链表, 每个这样的结构都包含了一个适配器的详细信息.值得注意的是,数据域 name 和 description 表示一个适配器名称和一个可以让人们理解的描述. 我们使用Microsoft Visual Studio 2010编译工具编译程序,中WinPcap文档中模块下找

[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website development Tags asp.net / mvc4 相关资源 ibatis manual pro git 廖雪峰的官方网站 BookMS-V1.0 上一篇链接 任务简介 开发工具:VS2010 项目框架:MVC4 浏览器:Chrome 数据库ORM框架:iBatis.net 数据库:mysql 后端开