vs工程 vcproj和开发环境定义宏---$(IntDir)和$(OutDir)
一、vs 基础配置文件解析
.vcproj是工程文件,sln是解决方案文件。一个解决方案里面可以包含多个工程。
你打开vcproj文件编译不了可能是因为这个工程里面用到了同一个解决方案中其它工程的东西。
visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息从而在每次继续开发任务时,不会因开发环境而分散精力;
*.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
比如是生成Debug模式,还是Release模式,是通用CPU还是专用的等
*.suo: (solution user opertion) 解决方案用户选项记录所有将与解决方案建立关联的选项,
以便在每次打开时,它都包含您所做的自定义设置。
.suo是solution user option的缩写,它是很重要的文件,它储存了用户界面的自定义配置,包括布局、断点和项目最后编译的而又没有关掉的文件(下次打开时用)等,以便于下一次你打开Visual Studio可以恢复这些设置,因此不要随便删除也无法删除,况且它们就是隐藏文件,所以不要管它们。 其实上面英文中解释已经很清楚了,要申明的是PDB中不带断点信息
二、vcproj简介
vcproj的具体格式为xml格式,其中包含三个主要的节:platform,configuration,Files
platform:描述的只是x64,x86等不同的平台。
configuration:描述的是编译和链接器的环境配置信息。可以通过vs08或者vs05的项目属性进行设置,也可以手动的进行设置。
Files:描述的是编译时需要的各种cpp,h文件,其中也会分节点,Filter描述的是目录,Files描述的是具体的文件。
三、用户自定义开发环境宏
视图->属性管理器->用户宏
例如$(IntDir)和$(OutDir)
下面的列表是对用户宏的解释
ConfigurationName | 配置名字,通常是Debug或者Release |
IntDir | 编译器使用的中间目录,产出obj文件 |
OutDir | 链接器使用的输出目录 |
ProjectDir | 项目目录 |
ProjectName | 项目名字 |
SolutionDir | 解决方案目录 |
TargetDir | 目标输出文件所在的目录 |
TargetExt | 目标输出的扩展名 |
TargetFileName | 目标输出文件名,包括扩展名 |
TargetName | 目标输出名,不包括扩展名 |
TargetPath | 目标输出文件的全路径名 |
例子:
配置属性
常规
输出目录:$(SolutionDir)$(Configuration)\
中间目录:$(Configuration)\
目标文件名:$(ProjectName)
目标文件扩展名:.exe
生成日志文件:$(IntDir)\$(MSBuildProjectName).log
调试
命令:$(TargetPath),表示调试器要启动的exe全名,TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值
工作目录:$(ProjectDir)
VS 默认情况下会创建并使用预编译头文件(也就是自动创建 StdAfx.h 和 StdAfx.cpp 这两个文件),以便在编译时加快编译速度,预编译器将它编译后,会生成一个 Pre-compiled header ,也就是 pch 文件,这样下次就可以直接使用这里已经编译好了的代码了。