vs多个项目协同工作的相关设置
2017-12-28 10:46
239 查看
首先看一下的生成结果:
再看一下所有工程统一输出一个lib:
==================================创建方法=======================================================
创建一个多工程项目
新建Project添加到已有Solution中,File->New->Project… 打开新建工程对话框新建一个UsingUtils工程,注意在Solution这一栏中我们选择Add to solution。 添加一个工程
添加引用关联,这时我们要使用这个Utils编译出来的库,配制也要简单一点了。右键UsingUtils工程->Properties->Common Properties->Framework and references,添加引用(依赖)的工程Utils。设置引用关联后,如果Utils工程发生改动或更新,在编译UsingUtils工程时就会重新编译Utils工程。
添加引用关联
设置头文件的路径。
设置头文件的路径
设置启动工程,在有多个工程的Solution中要设置启动工程(也就是要第一个开始执行的工程),不然你按F5运行时不知道从哪个工程开始执行。选择UsingUtils工程名右键鼠标->Set as Startup Project。然后就可以执行或调试UsingUtils工程了。
编译结果和目录管理
在多个组件同时开发时,把相关的Project放在同一个Solution下会方便很多。但你有没有发现一个新的问题,如果一个Solution有很多的Project,每一个Project目录下都会有一个编译结果的目录,如下图这样你昏不昏? 编译结果目录
那如何管理这些目录,使这些目录看起来不这么混乱呢?其实我们是可以设置这些目录的输出路径的,可以把它们放在一起管理。我们可以将输出目录设计成这样:
Utils
Utils
UsingUtils
Output
Win32
Debug
Bin
Lib
Temp
Release
Bin
Lib
Temp
这样看起来是不是结构清晰多了!Output为输出目录,Win32为Windows X32下编译的结构,Linux为Linux平台下的编译结果(这个涉及到跨平台开发,暂时不谈),Win32下再有Debug和Release等多个不同的释出版本,Bin下放置编译出的最终结果(如.exe等),Lib下放置编译出的所有.lib文件,Temp放置编译过程的临时文件(如.obj等)。
我们还是以Utils为例进行说明。Utils Solution下有两个Project:Utils(编译出Utils工具库)和UsingUtils(使用Utils的库),仅以释出Debug_Static进行说明,其它的释出方式与此类似。
所有Project使用同一组配制项。
说到Debug和Release就是一组配制项,其实整个Solution有一个配制项,每一个Project也有自己的配制项。 整个Solution的配制项也就是下图工具栏中你能看到的这些配制项:
Solution的配制项
而每一个Project的配制荐是你右键工程名->Properties能看到的配制项:
Project的配制项
一般一个Solution下的所有的Project最好使用同组配制项,这样不容易混乱。
给UsingUtils添加Debug_Static配制项。我们设置Utils的属性时已经配制了Debug_Static的配制项,并设置了Solution的Debug_Static配制项,再给UsingUtils添加Debug_Static的配制项。
添加配制项
标“4”的Create new solution configurations表示为整个Solution也添加(Debug_Static)配制项,这个复选框得取消勾选,因为设置Utils时已经为Solution默认添加了Debug_Static配制项,不然会添加不上。
设置Utils的输出路径,右键Utils工程->Properties进行如下配制。
设置输出路径
拷贝导出库.lib,我们可以将Utils编译出的静态库拷贝Utils.lib到Lib目录下,这样我们就可以直接把这个文件提供到调用方使用。
Build Events中可以设置编译前、链接前、编译后要进行的处理事件。这里我们目地是编译后将编译出的Utils.lib拷贝到Lib文件夹下,所以我们在Post-Build Event输入以下命令(原作者没有加引号是不能编译的,需要添加引号)
[cpp] view
plain copy
if not exist "$(SolutionDir)Output\Win32\$(Configuration)\Lib" (mkdir "$(SolutionDir)Output\Win32\$(Configuration)\Lib")
copy /Y "$(SolutionDir)Output\Win32\$(Configuration)\Bin\$(ProjectName).lib" "$(SolutionDir)Output\Win32\$(Configuration)\Lib\"
设置UsingUtils的输出路径,与Utils类似如下:
设置UsingUtils的输出路径
设置完成,Ok,编译一下再来看看输出结果目录,是不是清晰多了!
========================================================================================
中途如果遇到Visual
Studio 2013 fatal error C1041 /FS问题,是因为在设置中间路劲出现错误。
解决:
生成文件的从新拷贝到新文件
需求:可能我们需要给美工发布一个版本,那就需要*.exe, *.dll 和资源都放在一个文件夹下,然后同步给美工
问题:生成工程的时候.exe生成目录可能和资源目录不一致,总不能每编译一次都手动的把生成的.exe 和 dll拷贝到资源目录下吧
解决办法:用visual studio自带的生成后批处理命令
visual studio->右键工程->properties->Build Events->Post-Build Event->Command Line下
xcopy $(OutDir)$(TargetFileName) $(ProjectDir)..\Resources\ /Y
这个命令式功能是将生成目录下的exe文件拷贝到工程目录上一级目录下的Resources文件夹下
注意点:
1.$(OutDir)等宏路径中已经附带了'\'
2.生成后事件xcopy其实就是运行一个控制台命令,所以命令不支持‘/'
像之前写的一个错误命令
xcopy $(OutDir)$(TargetFileName) $(ProjectDir)../Resources\ /Y
运行会提示错误
3.“/Y"是参数,表示有相同文件存在则替换
当然也可以拷贝整个文件夹
xcopy "$(ProjectDir)controls" "$(TargetDir)..\app1\controls" /y /i /e /exclude:CodeFilesToExclude.txt
具体参数就要参考到CMD控制台下查看xcopy的具体功能了...
Bin Folders
Each project should write their output to a Bin folder under each of the Dev Folders. The Bin should NOT be checked into TFS, but should be created via a post-build event or by changing the project’s outputpath.
If post-build events are used, the following is a sample which assumes the solution in in the root directory:
@echo if not exist "$(SolutionDir)Cloud\bin\" (mkdir "$(SolutionDir)Cloud\bin\")
if not exist "$(SolutionDir)Cloud\bin\" (mkdir "$(SolutionDir)Cloud\bin\")
@echo copy /Y "$(TargetDir)$(TargetName).*" "$(SolutionDir)Cloud\bin\"
copy /Y "$(TargetDir)$(TargetName).*" "$(SolutionDir)Cloud\bin\"
Note: Make sure you echo statements before you execute them. This can help in debugging post-build failures in build log files.
相关文章推荐
- VS2012项目中使用CocoStudio相关文件的设置
- VS设置同时启动多个项目
- 一周乱弹2016-3-13(第五个周日,以今年工作开始时间计1,java类在继承2,js 的confirm确认方法3,tomcat 在设置项目的部署路径)
- Word转换成pdf在vs调试可以成功;发布到IIS上失败的相关设置
- 动态链接库、静态库区别与VS2005项目相关设置
- 这两天花了点时间,写了一个为VS.Net项目解除VSS相关信息的小工具。
- 【VS2013】链接第三方库的相关设置
- Matlab 工作路径设置相关
- phpstorm 或 webstorm 设置打开多个项目,多个项目并存。
- VS工程项目相关文件讲解:vcxproj.filters文件分析 + 调试技巧之调用堆栈
- Maria 项目相关工作总结
- 关于myeclipse中maven项目转换相关设置
- 方法:VS中解决方案的多个项目共用一个文件 如CS文件或配置文件等
- VS2013打包程序步骤,安装项目设置
- Android项目为一个apk设置多个ICON图标和执行入口
- VS相关设置
- VS 安装部署项目自解压程序解压后按顺序执行多个程序
- VS工程目录设置相关问题详解
- 动态链接库、静态库区别与VS2005项目相关设置
- IDEA 项目相关基础设置