[C++] 在Visual Studio工程中管理C++第三方库

目前的项目依赖于不少第三方库,每次要再一个新的环境编译/运行,都要花很长时间先编译/安装各类第三方库,并且会出现各类问题,所以决定将全部第三方库编译好以后,放入工程的子目录中,之后就不用重复编译了。ui

目录结构

整理后的目录结构以下:.net

一些设置

如此修改目录结构以后,VS工程的一些设置须要进行修改,分别说明一下:3d

输出文件的路径

在工程属性中 Configuration Properties > General > Output Directory 指定的是编译出来的lib/dll/exe存放的路径。orm

由于须要分平台,分Debug/Release版,因此用到了一些宏:blog

  • $(SolutionDir)表示solution所在的目录,在这里就是src
  • $(Platform)是当前编译的平台,win32/x64
  • $(Configuration)是当前编译的版本,Debug/Release

修改头文件和库文件的包含目录

相应修改一下就行,使用$(Platform)$(Configuration)这两个宏,可使各个平台/版本的配置都同样,不须要分开配置。it

具体想知道有哪些可使用的宏,能够再任何一个edit窗口,点击“Macro>>”按钮,展开全部的宏查看。io

指定dll所在目录

最后这一条比较重要,由于如今全部第三方库都不用安装了,因此在运行程序的时候如何找到这些dll是一个问题。编译

exe在运行的时候找dll的顺序以下,理论上把dll加到任何一个环节均可以:form

  1. 应用程序所在目录;
  2. 系统目录。GetSystemDirectory返回的目录,一般是系统盘\Windows\System32;
  3. 16位系统目录。该项只是为了向前兼容的处理,能够不考虑;
  4. Windows目录。GetWindowsDirectory返回的目录,一般是系统盘\Windows;
  5. 当前目录。GetCurrentDirectory返回的目录;
  6. 环境变量PATH中全部目录。

咱们以前作了这么多事情,就是为了在新的环境中不须要作任何配置就能运行VS的工程,因此任何手动拷文件/修改环境变量的方式都不是最好的。变量

参考了这篇文章 http://my.oschina.net/u/243648/blog/62847,由于咱们的dll分散在不少个文件夹中,最后采起的方法是将这些目录都加到环境变量PATH中,固然不是手动添加,而是加到VS的配置中。

在工程属性中 Configuration Properties > Debugging > Environment 能够添加在VS中运行程序须要添加的一些环境变量,仅对当前工程有效。咱们把全部第三方库的路径加进去就好了,注意必定要用相对路径,不然换一台机器仍是不能用。这里有个潜在的危险,若是你的系统里面已经装了这个第三方库,而且加到了上面6个环节中的任意一个,可能会引发一些错误。

另外若是出build的话,就须要另写一个脚本,将须要用到的第三方dll和编译出来的程序一块儿打包,这样就好了。

相关文章
相关标签/搜索