1.解决方案与项目:
你在VS新建的东西,在vs里面不叫作“项目”,叫做“解决方案(solution)”。一个解决方案(solution)里面可以有多个项目(project)。
2.解决方案目录:
如果你这个解决方案有很多项目,那么你就不止一个项目文件,应当有多个项目文件。
一个项目文件里面也是和解决方案相似的结构,也有debug等输出目录,因为一个项目可以被单独编译。
在最外面的debug目录是存放整个解决方案一起编译出来的exe等的文件。
一个项目的目录:
所以,虽然你在右侧资源管理器里看到文件被分开的很好,但实际上vs就是堆在了一起。
3.解决方案的属性和项目的属性:
每个项目有自己项目的属性,整个解决方案也有自己的属性。
4.单个项目属性的宏值:
下面讨论单个项目的属性。右击打开后,你发现许多宏值。
上图中,
“输出目录” 意思你生成exe等等文件的目录,本身对应的宏是$(Outdir);
“中间目录” 意思是单个项目的输出目录(里面只放链接文件等),本身对应的宏是$(IntDir);
“调试”选项中的“工作目录” 意思是 consoleC++的黑框框运行后的默认的目录,如果它是空的,那默认是项目结构文件(.sln文件)所在的地方,提醒一句,如果你用的simulation模式,那么显然你的工作目录要调成OutDir。
$(SolutionDir) 顾名思义,就是解决方案目录,也就是.sln那个架构文件所在的目录
$(Configuration)是你运行、调试那一栏的配置名,如图:
你这里点了什么,configuration的名字就是什么,有release、debug、simulation等。
$(OutDir),顾名思义,就是输出目录。注意,在上面的图中,你的输出目录已经有值了,就是$(SolutionDir)$(Configuration)。
$(IntDir),就是中间目录(或者翻译成内部目录)。注意,在上面的图中,你的中间目录已经有值了,就是$(Configuration)。
$(TargetDir) 意思是解决方案生成的那个exe所在的目录。
5.目录和属性相互对应一下
你所有的单个项目的exe等文件,集合成一个,放到了解决方案目录的debug(当然或者是release、simulation等)下面——符合$(OutDir)=$(SolutionDir)$(Configuration);
你单个项目的链接文件(.obj文件)、log文件等,都在你单个项目的debug里面——符合$(IntDir)=$(Configuration);