Visual C++ 设置适合自己的解决方案目录结构
Visual C++ 使用解决方案来管理项目,项目之间还可能有依赖关系,设置适合自己的解决方案目录结构,便于代码的管理、程序的发布。
下面开始一个虚拟解决方案设计:
假设此解决方案有应用程序项目A,动态链接库项目B,静态链接库项目C,其中项目A依赖项目B和项目C,则构建解决方案项目结构如下图所示:

而目录结构则如下图所示:

Bin:存放所有动态链接库和可执行程序,分Debug和Release两个版本
A:应用程序项目文件夹
B:动态链接库项目文件夹
C:静态链接库项目文件夹
Doc:存放项目文档
Include:存放引用库的头文件
Lib:存放动态链接库的导入库、静态链接库
Temp:存放临时生成文件,其中Compile存放编译时的中间文件,Link存放链接时的输出文件
除了Doc需要自己建立外,其他文件夹无需手动建立。
项目结构创建步骤:
1.创建一个新应用程序项目,名称A,解决方案名称为Work,如下图所示:

2.在"解决方案资源管理器"右键"解决方案Work","添加"→"新建项目"→"Win32"→"Win32 项目",名称为B,在"应用程序设置"选择"DLL"和"空项目";
3.同样的方式添加一个"Win32项目",名称为C,在"应用程序设置"选择"静态库",去掉"预编译头"选项;
4.项目结构如下图所示:

项目属性设置
配置项目A的属性
1.配置"所有配置","常规",
输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)
中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)

2."生成事件"→"生成后事件",
命令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y
3."C/C++"→"常规",
附加包含目录:$(SolutionDir)Include
4."链接器"→"常规",
附加库目录:$(SolutionDir)Lib
5."调试",
命令:$(SolutionDir)Bin\$(ConfigurationName)\$(TargetFileName)
工作目录:$(SolutionDir)Bin\$(ConfigurationName)
配置项目B的属性
1.配置"所有配置","常规"下,
输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)
中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)
2.配置"Debug","链接器"→"常规"下,
输出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.dll
3.配置"所有配置","生成事件"→"生成后事件"下,
命令行:
echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y
echo D | xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib" /y
echo D | xcopy "$(ProjectDir)B.h" "$(SolutionDir)Include" /y
第三行为xcopy动态库的头文件,实际要根据所需进行改动名称。
配置项目C的属性
1.配置"所有配置","常规"下,
输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)
中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)
2.配置"Debug","管理员"→"常规"下,
输出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.lib
3.配置"所有配置","生成事件"→"生成后事件"下,
命令行:
echo D | xcopy "$(TargetPath)" "$(SolutionDir)Lib" /y
echo D | xcopy "$(ProjectDir)C.h" "$(SolutionDir)Include" /y
第二行为xcopy静态库的头文件,实际要根据所需进行改动名称。
最后设置项目生成顺序
菜单栏→"项目"→"项目依赖项",项目A依赖于B和C,如下图所示:

编译生成,可看到如下结果:

用tree命令看下文件夹结构:

其他网上关于目录结构配置资料:
1.VC 2005 解决方案的目录结构设置和管理 http://blog.csdn.net/rogeryi/article/details/1481923
2.VC项目管理:目录结构 http://www.fancystar.org
3.VS2008中VC项目文件目录的管理 http://qimo601.iteye.com/blog/1059299
4.研发规范-VC http://wenku.baidu.com/view/26f6c789680203d8ce2f2414.html
Visual C++ 设置适合自己的解决方案目录结构的更多相关文章
- VS下的解决方案目录结构设置和管理
转载:http://blog.csdn.net/pl20140910/article/details/52074165 为了方便管理自己写的代码,也为了日后工作能方便的查找之前做过相同的代码,仿照某源 ...
- VS 解决方案目录结构设置
涉及到的配置: 项目编译时使用的中间目录: 项目链接的输出目录: 项目编译结束后,拷贝生成的 dll 和 lib 到指定目录: 项目编译结束后,拷贝需要的 dll 到输出目录: 设置项目的工作目录: ...
- 转: VS 解决方案目录结构设置
https://www.cnblogs.com/zuibunan/p/3843459.html 下面的文章也有介绍 https://blog.csdn.net/lp310018931/article/ ...
- Vs 2008 解决方案的目录结构设置和管理(转)
http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构
一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...
- Visual Studio解决方案的目录结构设置和管理
摘至:http://blog.csdn.net/lp310018931/article/details/47991759 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件 ...
- [转]Vs解决方案的目录结构设置和管理
原文地址:[转]Vs解决方案的目录结构设置和管理 作者:大明 以下内容为“原创”+“转载” 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对 ...
- VC 2005 解决方案的目录结构设置和管理
VC 2005 解决方案的目录结构设置和管理 Roger (roger2yi@gmail.com) 一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...
- VS解决方案的目录结构设置和管理
一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库. 所以为解决 ...
随机推荐
- Swift语言中如何使用JSON数据教程
这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...
- 《用格式化(fprintf和fscanf函数)的方式读写文件》
//用格式化(fprintf和fscanf函数)的方式读写文件 [用格式化的方式向文件中写入数据]#include<stdio.h>#include<stdlib.h> int ...
- SQL SERVER中的逻辑读取,物理读取,以及预读的理解
在SQLSERVER查询分析器中,当我们用Set Statistics on 语句来统计SQL语句或者存储过程I/O的时候, SQLSERVER会显示几个概念去词语:逻辑读取,物理读取,预读. 如下: ...
- Android res/raw vs assets
common: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. difference: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源I ...
- [ASP.net教程]ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等)
以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)在ASP.NET中,有很多种保存信息的对象.例如 ...
- android中string.xml引起的常见编译错误
1.遇到如下错误的时候说明你需要在单引号签名加转义字符(\): 1 Description Resource Path Location Type error: Apostrophe not prec ...
- BZOJ 1690 奶牛的旅行
分数规划. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...
- 【LeetCode OJ】Pascal's Triangle II
Problem Link: http://oj.leetcode.com/problems/pascals-triangle-ii/ Let T[i][j] be the j-th element o ...
- C#导入、导出功能
//导出功能 protected void btnExport(object sender, EventArgs e) { //用来打开下载窗口 string fileName = "中心联 ...
- 微信 关闭手机微信内置浏览器的js
WeixinJSBridge.call('closeWindow');