分析
在操作vs的时候,发现它的解决方案文件夹目录很复杂,便在网上查看一些资料,记录下来,
基本是就是说解决方案下有一个同名的项目文件,
一个Debug文件夹,
一个Realise文件夹可能有include文件夹,
lib文件夹,
生成的程序放在debug文件下,
而子目录的debug放的是log文件.
涉及到的配置:
.项目编译时使用的中间目录;
.项目链接的输出目录;
.项目编译结束后,拷贝生成的 dll 和 lib 到指定目录;
.项目编译结束后,拷贝需要的 dll 到输出目录;
.设置项目的工作目录;
.设置调试时执行的 exe 和工作目录;
配置时使用到的一些宏:
ConfigurationName 配置名字,通常是Debug或者Release
IntDir 编译器使用的中间目录,产出obj文件
OutDir 链接器使用的输出目录
ProjectDir 项目目录
ProjectName 项目名字
SolutionDir 解决方案目录
TargetDir 目标输出文件所在的目录
TargetExt 目标输出的扩展名
TargetFileName 目标输出文件名,包括扩展名
TargetName 目标输出名,不包括扩展名
TargetPath 目标输出文件的全路径名
下面以 Sticker 为例展示目录结构设置的过程:
Sticker 目录结构:
Sticker
+– 3rd (第三方库)
| +– dll
| | +– debug
| | +– release
| +– lib
| | +– debug
| | +– release
| +– include
|
+– src (源码)
| +– Sticker
| | +– Sticker 项目的代码
| +– StickerLibrary
| | +– StickerLibrary 项目的代码
| +– Sticker.sln
|
+– xar (脚本)
| +– Sticker
| +– …
|
+– doc (文档)
|
+– bin (可执行文件)
| +– debug
| +– release
|
+– temp (中间目录)
+– compile
| +– debug
| +– release
+– link
+– debug
+– release
操作顺序
- 创建文件夹 Sticker\src
- 创建一个空的解决方案 Sticker.sln ,放入 Sticker\src 中
- 创建项目 Sticker
- 属性 –> 配置 设定为“所有配置”,这样可以同时设定 debug\release 下的配置
- 配置属性 –> 常规 –> 中间目录: $(SolutionDir)..\temp\compile\$(ConfigurationName)
- 配置属性 –> 常规 –> 输出目录: $(SolutionDir)..\temp\link\$(ConfigurationName)
- 配置属性 –> C/C++ –> 常规 –> 附加包含目录: “$(SolutionDir)..\3rd\include”
- 配置属性 –> 链接器 –> 常规 –> 附加库目录: “$(SolutionDir)..\3rd\lib\$(ConfigurationName)”
- 配置属性 –> 链接器 –> 输入 –> 附加依赖项: xxx1.lib xxx2.lib xxx3.lib
- 配置属性 –> 生成事件 –> 生成后事件 –> 命令行:
md $(SolutionDir)..\bin\$(ConfigurationName)
copy $(TargetPath) $(SolutionDir)..\bin\$(ConfigurationName)
copy $(SolutionDir)..\3rd\dll\$(ConfigurationName) $(SolutionDir)..\bin\$(ConfigurationName) - 配置属性 –> 调试 –> 命令: $(SolutionDir)..\bin\$(ConfigurationName)\$(TargetFileName)
- 配置属性 –> 调试 –> 工作目录: $(SolutionDir)..\bin\$(ConfigurationName)\