[参考文章] VS 解决方案目录结构设置
场景模拟
- 创建解决方案 animal.sln
- win32项目 dog_win32
- dll动态库项目 eat_dll
- lib静态库项目 drink_lib
效果截图
详细目录结构请下载源码(文章底部)
步骤
- 手动创建文件夹 animal
- 手动创建文件夹 animal/third_party(第三方库)
- 手动创建文件夹 animal/doc(文档)
- 创建空白解决方案,名字叫做animal,位置animal\,如图:
然后,关闭vs2017,更改animal文件夹名称为src,再打开vs2017 - 添加动态库项目eat_dll。
右键解决方案->添加->新项目->Visual C++->Windows桌面->动态链接库(DLL),名称叫eat_dll
配置属性:
a. 右键eat_dll->属性->配置(所有配置),平台(win32)
b. 配置属性->常规
// 输出目录:
$(SolutionDir)..\temp\x86\link\$(ProjectName)\$(ConfigurationName)
// 中间目录:
$(SolutionDir)..\temp\x86\compile\$(ProjectName)\$(ConfigurationName)
c. 调试
// 命令
$(SolutionDir)..\bin\x86\$(ConfigurationName)\$(TargetFileName)
// 工作目录
$(SolutionDir)..\bin\x86\$(ConfigurationName)
d. C/C++ -> 常规 -> 附加包含目录
$(SolutionDir)..\third_party\include\第三方库名称(默认不需要配置此项)
e. 生成事件 -> 生成后事件
md $(SolutionDir)..\bin\x86\$(ConfigurationName)
md $(SolutionDir)..\third_party\include\$(ProjectName)
md $(SolutionDir)..\third_party\libs\$(ProjectName)
copy $(ProjectDir)$(ProjectName).h $(SolutionDir)..\third_party\include\$(ProjectName)
copy $(TargetDir)$(TargetName).dll $(SolutionDir)..\bin\x86\$(ConfigurationName)
copy $(TargetDir)$(TargetName).lib $(SolutionDir)..\bin\x86\$(ConfigurationName)
WIN64项目,把所有配置内容的x86换成x64即可
- 添加空白win32项目dog_win32。
右键解决方案->添加->新项目->Visual C++->常规->空项目,名称叫dog_win32
创建文件main.cc,代码如下:
#include <stdio.h>
#include "../../third_party/include/eat_dll/eat_dll.h"
#ifdef _DEBUG
#ifdef _WIN64
#pragma comment(lib, "../../bin/x64/Debug/eat_dll.lib")
#else
#pragma comment(lib, "../../bin/x86/Debug/eat_dll.lib")
#endif
#else
#ifdef _WIN64
#pragma comment(lib, "../../bin/x64/Release/eat_dll.lib")
#else
#pragma comment(lib, "../../bin/x86/Release/eat_dll.lib")
#endif
#endif
int main()
{
hello();
getchar();
return 0;
}
eat_dll的属性配置很多相同地方,下面列出不同之处
生成事件 -> 生成后事件
md $(SolutionDir)..\bin\x86\$(ConfigurationName)
copy $(TargetPath) $(SolutionDir)..\bin\x86\$(ConfigurationName)
- 添加静态库项目drink_lib,如图:
属性配置,和eat_dll的属性配置很多相同地方,下面列出不同之处
生成事件 -> 生成后事件
md $(SolutionDir)..\bin\x86\$(ConfigurationName)
md $(SolutionDir)..\third_party\include\$(ProjectName)
md $(SolutionDir)..\third_party\libs\$(ProjectName)
copy $(ProjectDir)$(ProjectName).h $(SolutionDir)..\third_party\include\$(ProjectName)
copy $(TargetDir)$(TargetName).lib $(SolutionDir)..\bin\x86\$(ConfigurationName)
最后再次提醒:
WIN64项目,把所有配置内容的x86换成x64即可
完整实例源码,请下载:
VS2017解决方案的目录结构配置