zoukankan      html  css  js  c++  java
  • vcproj文件格式

    vcproj文件格式

      

    上回说到了sln文件格式,每个sln都包含了一个到多个工程文件,c++工程文件的文件扩展名为vcproj,这回说一下vcproj的格式。

    vcproj是一个标准的xml文件。因此以下就以节点顺序描述。

    根节点是VisualStudioProject,属性中包含了工程的全局信息,常见的信息有:

    属性

    含义

    说明

    ProjectType

    工程类型

    默认值是Visual C++

    Version

    版本

    默认值是7.10

    Name

    工程名称

     

    ProjectGUID

    工程的GUID

     

    Keyword

    工程关键字

    默认值是Win32Proj

    SccProjectName

    SccAuxPath

    SccLocalPath

    SccProvider

    SourceSafe信息

    默认值是SAK

    后面的Scc**属性,标志了此工程在SourceSafe中。手动将一个工程从SourceSafe中删除时,只要删除这四个属性就行。当它们的默认值是SAK时,可以在工程文件的同一个目录下找到一个文件mssccprj.scc,这里面包含了工程在SourceSafe中的信息,比如:

    SCC = This is a Source Code Control file

    [PS.vcproj]

    SCC_Aux_Path = "\\code-server\code$\"

    SCC_Project_Name = "$/project/PS", IQIBAAAA

     

    根节点下有三个子节点比较重要。Platforms很简单,表示平台内容,通常就是“Win32”;Configurations是编译和链接的配置信息;Files下包括的是工程中的文件信息。以下主要谈谈ConfigurationsFiles

     

    Configurations包含了工程编译和链接等配置信息,其子节点是Configuration,由用户设定的编译类型决定,默认有DebugRelease两个子节点。Configuration的属性如下:

    属性

    含义

    说明

    Name

    编译选项名称

    Debug下通常为Debug|Win32

    OutputDirectory

    目标文件输出路径

    默认为Debug

    IntermediateDirectory

    编译信息输出路径

    默认为Debug

    ConfigurationType

    工程类型

    1表示exe程序文件,2表示dll动态库文件,3表示lib静态库文件

    UseOfMFC

    表示是否使用MFC

    0表示不使用MFC1表示静态链接MFC2表示动态链接MFC

    CharacterSet

    表示编码类型

    1表示Unicode2表示Ansi

     

    Configuration的子节点全是Tool,每个子节点都有一个属性Name表示节点含义。这里面有两个子节点比较有用,一个是VCCLCompilerTool,表示编译信息,一个是VCLinkerTool,表示链接信息,其它的子节点用的不多。

    VCCLCompilerTool的常用属性如下:

    属性

    含义

    说明

    Optimization

    优化选项

    可以为01234

    PreprocessorDefinitions

    预定义标记

    通常都是WIN32 _WINDOWS _DEBUG

    MinimalRebuild

    是否使用最小编译

    设置为TRUE能节约编译时间

    BasicRuntimeChecks

    运行时检测,包括栈和未初始化变量等

    默认为3

    RuntimeLibrary

    程序运行时

    选择多(单)线程,(非)调试,DLLEXE)类型

    TreatWChar_tAsBuiltInType

    是否将wchar_t当作内置类型

    如果为FALSEwchar_t被认为是unsigned short类型

    ForceConformanceInForLoopScope

    iffor循环中声明的变量的作用范围是否在循环内

    7.1默认为FALSE8.0默认为TRUE

    UsePrecompiledHeader

    预定义头文件设置

    0表示不使用,1表示创建预定义头文件,2表示自动创建,3表示使用预定义头文件

    PrecompiledHeaderThrough

    预定义头文件名

    通常都是stdafx.h,可以随意指定

    PrecompiledHeaderFile

    预编译信息文件名

    默认为$(IntDir)/$(TargetName).pch

    WarningLevel

    警告级别

    4

    Detect64BitPortabilityProblems

    检测是否兼容64位程序

    FALSE

    DebugInformationFormat

    调试信息格式

    Debug下通常设置为4Release下可以设置为3

     

    VCLinkerTool的常用属性如下:

    属性

    含义

    说明

    AdditionalDependencies

    依赖lib文件

     

    OutputFile

    输出的目标文件

    默认$(OutDir)/$(ProjectName).exe

    LinkIncremental

    增量编译

    2

    AdditionalLibraryDirectories

    依赖lib的位置

     

    GenerateDebugInformation

    是否生成调试信息

    通常都为TRUE

    ProgramDatabaseFile

    调试信息文件名称

    $(IntDir)/$(ProjectName).pdb

    SubSystem

    子系统

    1为控制台,2Windows程序

    ImportLibrary

    导入的lib文件

    默认$(IntDir)/$(ProjectName).lib

     

     

    Files下包括的是工程中的文件信息,由FilterFile组成,Filter表示目录,File表示文件。每个cpp还可以包含一个子节点FileConfiguration,这个子节点表示此cpp文件编译时与全局编译选项不一致的内容,通常情况下除了预编译头文件外这不是必须的,预编译头则必须指定它的UsePrecompiledHeader信息为1,也就是由它来创建预定义头文件。

  • 相关阅读:
    模拟退火求最小覆盖圆和最小覆盖球
    牛客SQL题解-请你对于表actor批量插入如下数据(不能有2条insert语句哦!)
    牛客SQL题解-创建一个actor表,包含如下列信息
    牛客SQL题解-将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
    牛客SQL题解-查找描述信息中包括robot的电影对应的分类名称以及电影数目
    牛客SQL题解-汇总各个部门当前员工的title类型的分配数目
    JavaScript
    JavaScript-给代码添加注释
    牛客SQL题解-获取员工其当前的薪水比其manager当前薪水还高的相关信息
    牛客SQL题解-获取所有非manager员工当前的薪水情况
  • 原文地址:https://www.cnblogs.com/fedorayang/p/5094227.html
Copyright © 2011-2022 走看看