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++ 设置适合自己的解决方案目录结构的更多相关文章

  1. VS下的解决方案目录结构设置和管理

    转载:http://blog.csdn.net/pl20140910/article/details/52074165 为了方便管理自己写的代码,也为了日后工作能方便的查找之前做过相同的代码,仿照某源 ...

  2. VS 解决方案目录结构设置

    涉及到的配置: 项目编译时使用的中间目录: 项目链接的输出目录: 项目编译结束后,拷贝生成的 dll 和 lib 到指定目录: 项目编译结束后,拷贝需要的 dll 到输出目录: 设置项目的工作目录: ...

  3. 转: VS 解决方案目录结构设置

    https://www.cnblogs.com/zuibunan/p/3843459.html 下面的文章也有介绍 https://blog.csdn.net/lp310018931/article/ ...

  4. Vs 2008 解决方案的目录结构设置和管理(转)

    http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...

  5. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  6. Visual Studio解决方案的目录结构设置和管理

    摘至:http://blog.csdn.net/lp310018931/article/details/47991759 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件 ...

  7. [转]Vs解决方案的目录结构设置和管理

    原文地址:[转]Vs解决方案的目录结构设置和管理 作者:大明   以下内容为“原创”+“转载” 首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对 ...

  8. VC 2005 解决方案的目录结构设置和管理

    VC 2005 解决方案的目录结构设置和管理   Roger (roger2yi@gmail.com)   一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...

  9. VS解决方案的目录结构设置和管理

    一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库.   所以为解决 ...

随机推荐

  1. iOS之沙盒机制和如何获取沙盒路径

    iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件. ...

  2. Oracle GoldenGate 12c (12.1.2.0.1) for IBM DB2 iSeries

    OGG 12.1.2.0.1 for iSeries 在2014.2.15发布,主要新增如下功能: 本地交付(Native Delivery Replicat):新功能允许用户在IBM i服务器上安装 ...

  3. jenkins持续集成工具

    jenkins是开源的 持续集成.持续构建的可视化web工具,持续构建说直白,就是各种项目的自动化编译.打包.分发部署. 好很多优点: 1.支持多语言 2.跟svn.git能无缝集成 3.直接与知名源 ...

  4. Apache目录结构(一)

    一.Apache 目录结构 bin: 该目录用于存放apache常用的命令,比如httpd cig-bin:该目录存放linux下的常用命令 .sh conf:存放配置文件httpd.conf,在ht ...

  5. H5实现俄罗斯方块(二)

    对应的js 1.封装操作dom的js: (function (document) { //游戏的实例 var gameInst; /**封装一个返回原型的DOM对象 */ function DomOb ...

  6. Java_oop_继承

    不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰.想想还有点小激动呢, OK,睡醒了,我们说到继承就先来学习一下Java中继承的语法. public SubClass exte ...

  7. Android沉浸式(侵入式)标题栏(状态栏)Status(一)

     Android沉浸式(侵入式)标题栏(状态栏)Status(一) 现在越来越多的APP设计采用这种称之为沉浸式状态栏(Status)的设计,这种沉浸式状态栏又称之"侵入式"状 ...

  8. 转载:C# Word操作实现代码

    转载自:http://www.jb51.net/article/17770.htm 在VS2008平台下,引用.net-Microsoft.Office.Interop.Word.12,这样就可以在程 ...

  9. magento关于站点搬家,换空间

    1,先把原来空间的文件全部压缩后(有些不要的就不要压缩)下载下来,然后传到新空间去,注意下载下来后核对一下是否大小一样,建议使用ftp工具下载, 2,同样把原来空间的数据库打包下来,再在新空间创建一个 ...

  10. 重定位shell

    http://www.tldp.org/LDP/abs/html/io-redirection.html http://unix.stackexchange.com/questions/20469/d ...