带你玩转Visual Studio——Property Manager的配制

从问题入手

抛出问题

在我的电脑上原本安装了VS2010专业版,现在由于项目的需要又安装了VS2015,但原来的VS2010用不了,在VS2010下编译程序时报如下错误:

1>TRACKER : error TRK0002: Failed to execute command: “”C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\CL.exe” @C:\Users\Administrator\AppData\Local\Temp\tmp6095048feb5e4db6845129a7e84fde38.rsp”. 操作标识符不正确。

解决方案

从这个错误提示中我们可以发现,用VS2010编译时用的是VS2015的编译器(Visual Studio 14.0),而且是64位的,说明是用的编译器不匹配,那如何设置回VS2010的编译器呢?

通过Google找到了如下答案:

菜单View->Property Manager->Debug|Win32->Microsoft.Cpp.Win32.user,双击它打开设置页,查看VC++ Directories->Executable Directories值,我们会发现果然设置成了VS2015的编译器,将它改了,设置成VS2010安装目录下的VC\bin目录,如我的是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。

Property Manager

再次编译程序,会发现这个错误没有了,完美搞定!

但Property Manager这个设置以前还真没怎么用过,它有什么功能呢?它与右键工程->Properties的属性页又有什么区别呢?于是对它进行了深一步的探索!

深入研究

概念性了解

首先,明白两个概念:Project Property和Property Sheet。

Project Property:又称项目属性,是你当前项目的属性配制,保存在你工程的配制文件中,ProjectName.vcxproj中。

Property Sheet:又称属性表,可用于多个工程的属性配制,可以自己创建添加属性配制,也可以使用系统默认的属性表,保存在.props为拓展名的文件中。而属性表(Property Sheet)的添加和管理就是在Property Manager中进行设置的。

Property Manager的使用

  1. 打开Property Manager窗口。菜单View->Property Manager或View->Other Windows->Property Manager。可看到如下界面:

    Property Manager

  2. 属性的设置。双击属性表名称(如Microsoft.Cpp.Win32.user)就可以对它进行设置了。你会发现它的配制项与右键工程->Properties打开的项目属性是一样的。Microsoft.Cpp.Win32.user是当前系统用户默认的属性表,保存在C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props中,使用这个用户名登录操作系统,用VS创建的所用项目都会继承这个属性表的配制属性。
  3. 设置VC++ Directories。在这个配制项中,我们可以设置VC++编译、链接需要的各种工具和资源的路径。

    VC++ Directories

    Executable Directories:可执行程序(如cl.exe、link.exe、lib.exe等)的路径,一般会包含VC\bin的路径;

    Include Directories:要包含的头文件(如CRT的头文件)的路径,一般会包含VC\include的路径;

    Reference Directories:引用的库的路径,如MFC的库(VC\atlmfc\lib);

    Libbrary Directories:要包含的lib库的路径,一般会包含VC\lib的路径;

    Source Directories:源代码的路径,一般会包含VC\crt\src的路径;

    Exclude Directories:不被包含文件的路径。

  4. 自定义宏。在配制工程属性时你是否经常会看到一些宏,如(SolutionDir)、(Configuration)、$(OutDir)等,但你却不知道如何更改它,这些都是MSBuild为你预定义的一些宏。其实你也可以定义一些自己的宏,甚至可以重写原有的宏。方法如下:

    User Macros

    这时你在配制自己的工程属性(如Additional Include Directories)时就能看到自己定义的宏了:

    Use User Macros

  5. 添加或导入Property Sheet,这个太简单了,直接看图:

    Import and Export Property sheet

属性的继承关系

项目的属性是分层的。 每一层会继承前一层的值,但是继承的值可以通过设置属性来显式地重写。 下面是基本的继承关系(继承树):

1. 来自 MSBuild CPP工具集的默认设置(..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props,它将被 ProjectName.vcxproj文件导入)。

2. Property sheets(属性表),也就是Property Manager中设置的属性表。

3. 工程文件ProjectName.vcxproj .(可以重写默认值和property sheet 中的设置)。

4. 每一项的元数据。

参考文章:https://msdn.microsoft.com/en-us/library/669zx6zc.aspx

版权声明:本文为博主原创文章,未经博主允许不得用于任何商业用途,转载请注明出处。

时间: 2024-10-24 04:12:53

带你玩转Visual Studio——Property Manager的配制的相关文章

带你玩转Visual Studio——带你高效管理代码

上一篇文章带你玩转Visual Studio--带你高效开发通过对VAssistX优秀插件的讲解,让我们掌握了快速开发C++代码的技能.然而大部分的程序都不是一个人的开发的,是由一个团队的多个人一起开发的,大型的系统还可能由多个不同的团队分包进行开发.多人进行协作开发时,代码的管理就显得及为重要,需要借助代码管理工具的辅助,这种工具又称为版本控制系统. 目前主流的版本控制系统有: CVS:是一个用于代码版本控制的自由软件,它是一个比较早出现的工具,由于它有很多自身的缺陷,现在几乎被SVN所取代了

带你玩转Visual Studio——结局汇总

感谢 这一系列文章陆陆续续写了一个月,也差不多可以告一个段落了.感谢读者们一直以来对我关注和支持!现将这一系列文章在这做一个汇总,以方便大家查阅.若是初学者,建议按顺序阅读. 系列文章目录 带你玩转Visual Studio--开篇介绍 带你玩转Visual Studio--带你新建一个工程 带你玩转Visual Studio--带你了解VC++各种类型的工程 带你玩转Visual Studio--带你高效开发 带你玩转Visual Studio--带你高效管理代码 带你玩转Visual Stu

带你玩转Visual Studio——带你发布自己的工程库

上一篇文章带你玩转Visual Studio--带你高效管理代码通过对VisualSVN优秀插件的讲解,让我们掌握了在集成开发环境VS中快捷高效地管理代码的技能.然而我们开发的程序并不总是直接地生成可执行的软件,我们可能只是开发某个大型系统的一个组件,也可能是开发某个软件的内核SDK提供给上层的应用程序调用,在开发的过程中我们也可能会用到第三方的开源库.那如果将自己的程序编译成程序库给调用方用呢?又如何在自己的程序中引用第三方库呢?这将是这篇文章要讲的内容--发布自己的工程库. 什么是程序库?

带你玩转Visual Studio——带你了解VC++各种类型的工程

上一篇文章带你玩转Visual Studio--带你新建一个工程一文中提到新建一个工程时会有很多的工程类型(图1),现在将简单介绍各种类型工程的含义和主要用途.由于这里包含的工程类型太多,有很多本人也没有接触过,有些可能理解的不太对的地方还请谅解. 图 1:New Project 理解几个概念 在开讲之前先大概理解几个概念,这是理解后面各种工程含义的基础. COM COM(Component Object Model)组件对象模型是microsoft制定的一个组件软件标准,跟unix上的CORB

转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码

上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的一个地方,我们对它进行了总结和归纳.本篇文章我们将继续讲解C++开发中容易混淆的另一个概念——多字节字符集与Unicode字符集. 多字节字符与宽字节字符 char与wchar_t 我们知道C++基本数据类型中表示字符的有两种:char.wchar_t. char叫多字节字符,一个char占一个字节

带你玩转Visual Studio——性能分析与优化

上一篇文章带你玩转Visual Studio--VC++的多线程开发讲了VC++中多线程的主要用法.多线程是提升性能和解决并发问题的有效途经.在商用程序的开发中,性能是一个重要的指标,程序的性能优化也是一个重要的工作. 找到性能瓶颈 二八法则适合很多事物:最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的.在程序代码中也是一样,决定应用性能的就那20%的代码(甚至更少).因此优化实践中,我们将精力集中优化那20%最耗时的代码上,这那20%的代码就是程序的性能瓶颈,主要针对这部

带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑

在Windows下进行C++的开发,不可避免的要与Windows的底层库进行交互,然而VS下的一项设置MT.MTd.MD和MDd却经常让人搞迷糊,相信不少人都被他坑过,特别是你工程使用了很多第三库的时候,及容易出现各种链接问题.看一下下面这个错误提示: LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined in libc.lib(_file.obj) LIBCMT.lib(_file.obj) : error LN

带你玩转Visual Studio——命令行编译C/C++程序

VS构建工具介绍 我们都知道C/C++源代码要生成可执行的.exe程序,需要经过编译.链接的过程.你在VS工具中只需要选择菜单Build或按一下F5可以编译.链接.运行了,其实IDE帮我隐藏了好多的具体细节. 我先假设VS2010安装在以下目录中: C:\Program Files (x86)\Microsoft Visual Studio 10.0 打开安装目录下的VSDIR\VC\bin可以看到一系列的可执行程序.exe和批处理文件,这些就是VS2010构建.编译.链接时要用到的工具.看一下

带你玩转Visual Studio——开篇介绍

开篇之前,先唠叨几句 本人从事C++开发工作一年半,总想就C++开发方面写点东西.写什么呢?想了一下还是写点跟开发密切相关的吧,要说跟开发最密切相关的那莫过于就是开发工具了,也就是常常说的集成开发环境(IDE). 这一年多从事的是C++的跨平台开发,在Linux和Windows下都开发过,但主要还是在Windows下进行开发(一般会在Windows下开发,多个平台下编译),因为Windows下有强大好用的开发工具,那就Visual Studio. 讲述的范围 本系列博文讲述的内容为: Windo