visual studio(vs)中项目解决方案的目录组织安排

摘要:
最重要的是使用vs构建解决方案。同时,它还需要依赖一些第三方库。为了便于将来的维护,我们希望使解决方案的每个文件夹的组织更加合理。方案A依赖于分布在include、bin和lib目录中的第三方库,而方案B有一个专用于存储第三方的库的第三个文件夹。假设当前sln文件名为test,有两个项目:A.exe和B.dll,它们依赖于X.dll和Y dll,目录组织如下图所示。Xcopy$$Bin$请注意,命令变为Xcopy,并删除末尾的分号。之后,即使Bin目录中没有Debug或Release目录,编译器也会自动生成它!

最进要用vs建立一个解决方案,同时也要依赖一些第三方库,为了以后便于维护,因此想让解决方案的各个文件夹的组织更加合理。通过网上搜索一些网友的解决方案,发现大致可以分为两种,分别参见网址https://blog.csdn.net/lp310018931/article/details/47991759和https://www.cnblogs.com/zuibunan/p/3843459.html,姑且叫他们方案A和方案B。截屏自上面两个网址,方案A和方案B的目录组织可以图示如下。
方案A:

visual studio(vs)中项目解决方案的目录组织安排第1张

方案B:

visual studio(vs)中项目解决方案的目录组织安排第2张

可见,方案A和方案B的主要有两点不同,1、解决方案sln文件的位置,2、第三方库的位置。

方案A的sln文件及project文件位于最外层,而方案B多了一个src文件夹,sln文件及project文件位于该文件夹内。方案A依赖的第三方库分布在include、bin、lib目录中,而方案B有一个3rd文件夹专门用于存放第三方库的东西。
综合上述两种方案,决定sln文件的位置采用方案B的,这样的话即使有很多个project,最顶层还是那几个目录,不会显得乱。而第三方库的位置,采用方案B的,但是在include和lib文件中,都放到相应的以库名字命名的文件夹下,方便管理,而bin文件则直接放到bin下的当前配置文件夹下。
假设当前sln文件名为test,有A.exe和B.dll两个项目,依赖于X.dll和Y.dll两个第三方库,那么目录的组织如下图所示。

visual studio(vs)中项目解决方案的目录组织安排第3张

补充1:各位兄弟们,那个copy的问题我终于解决了,原来当目标路径的文件夹不存在时,copy命令就不好用了,提示系统找不到指定的路径。,把这句话:
copy $(TargetPath) $(SolutionDir)Bin$(ConfigurationName);
换成以下这句就OK了……
xcopy $(TargetPath) $(SolutionDir)Bin$(ConfigurationName)
注意,命令变成了xcopy了,而且最后的分号去掉啦,之后即使Bin目录下没有Debug或Release目录编译器也会自动生成的!~

补充2:避免下次编译覆盖文件提示加个“/y” 参数,具体修改如下:
xcopy $(TargetPath) $(SolutionDir)Bin$(ConfigurationName) /y
这回就OK了,如果目标文件正在被使用中的话,会提示“共享侵犯”哦!~

免责声明:文章转载自《visual studio(vs)中项目解决方案的目录组织安排》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇lodash 数组元素查找 findIndexNginx如何上传大文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Visual Studio Express 2012 安装缺少头文件、库文件的问题

今天安装好Visual Studio Express 2012之后,新建了一个VC++ Win32 Console Application,输入一个简单的 Hello world 代码,竟然编译不过,提示缺少头文件。 fatal error C1083: 无法打开包含文件: 'stdio.h': No such file or directory 在VS安...

rm 命令(删除文件和目录)

rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。 rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底...

FreeMarker 在JAVA控制台应用(5)

建立一个普通的java项目:HelloFreeMarker 引入freemarker.jar包 在项目目录下建立模板目录:templates 在templates目录下,建立hello.ftl模板文件,模板内容如下:你好啊,${user},今天你的精神不错! 在src下新建com.kj.study.freemarker包,然后建立Hello.ja...

用VisualSVN做项目版本控制

一、SVN服务端 1、VisualSVN Server下载: http://download.csdn.net/detail/jiminull/4448874 或 http://www.visualsvn.com/server/download/ VisualSVN Server是免费的 2、VisualSVN Server安装:   下载完VisualS...

【四】将vue项目打包至阿里云服务器,并进行配置nginx

1、生成vue项目文件目录dist npm run build 2、编写dockerfile文件 FROM nginx COPY ./dist/ /usr/share/nginx/html/ COPY nginx.conf /etc/nginx/nginx.conf 3、编写nginx.conf文件 #user nobody; worker_proces...

(转)每天一个linux命令(8):cp 命令,复制文件和文件夹

场景:自动部署脚本中为了部署方便,将配置文件放在服务器端,每次部署都使用服务端的配置文件覆盖上传上去的配置文件。 cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。 一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。 但是如果是在shell脚本中执行cp时,没有-i参...