1.一个解决方案下可包含多个项目。
2.默认情况下,项属性的设置的录起点为项配置文件所在的位置,即头文件和源文件所在的位置。
3.VC++下默认建立C++项目,则解决方案总录下包含一个sln和一个项文件夹,编译生成项后在总目录下还会生成对应的Debug和Release目录,存放最终生成的exe或dll文件
例如:新建了一个Demo项目,vs里会自动生成一个Demo的解决方案(Demo.sln),编译Demo项后在总目录下自动生成一个Debug目录存放最后生成的解决方案下的所有项目的exe或dll文件。
解决方案下有两个项目Demo和Demo2,如下图所示
编译生成后Debug目录下如下图所示
项目目录如下图所示
项目配置及系统变量关系:
在vs2010的项目属性页,会有一些系统变量,如下:
SolutionDir:解决方案目录
Configuration:指debug或release
ProjectName:项目名字
OutDir:在 常规--输出目录 中定义的值,如$(SolutionDir)$(Configuration)\,表示XXX\Solution\debug\目录值
IntDir:中间目录
TargetDir:生成exe或dll文件所在位置,如链接器-常规-输出文件为$(OutDir)$(TargetName)$(TargetExt)(即定义了exe输出位置,也就决定了TargetDit的值),此时TargetDir表示在XXX\Solution\debug\
TargetName:目标输出名,不包括扩展名
TargetPath:目标输出文件的全路径名
ProjectDir:表示项目目录值,一般在“调试-工作目录”中设置该值
TargetExt:扩展名
PlatformToolsetVersion:
默认情况下“输出目录”和“输出文件”对应的目录值是一样的。
配置属性
常规
输出目录:$(SolutionDir)$(Configuration)\
中间目录:$(Configuration)\
目标文件名:$(ProjectName)
目标文件扩展名:.exe
生成日志文件:$(IntDir)\$(MSBuildProjectName).log
调试
命令:$(TargetPath),表示调试器要启动的exe全名,TargetPath就表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“输出文件”属性代表的值
工作目录:$(ProjectDir)
调试器类型 :Dll选择混合
C/C++
预处理器:定议#ifdef ...#enfif 变量值
链接器
常规
输出文件:$(OutDir)$(TargetName)$(TargetExt)
附加库目录: ..\Lib (建一个lib目录存放引用的lib库)
输入
附加依赖项:XXX.lib (Lib目录下的一个或多个.lib文件)
清单文件
清单文件:$(IntDir)$(TargetName)$(TargetExt).intermediate.manifest
调试
生成程序数据库文件:$(TargetDir)$(TargetName).pdb
优化:
按配置优化数据库:$(TargetDir)$(TargetName).pgd