作者:朱金灿
来源:http://blog.csdn.net/clever101
以前写个程序,常常会用到开源代码作为第三方库。但常常时每写个程序就编译一次第三方库,这个非常浪费时间。昨天想了个办法,专门设一个文件夹OpenSource来存放第三方库。里面这样存放,比如在MinGW44环境下编译的boost库,就新建一个boost_1_42_0_MinGW44文件夹;用vc2005编译的png库,就新建一个png_vc8文件夹,具体如下图:
然后在每个库文件夹里建三个文件夹:
include —— 专门存放源码文件
lib —— 存放静态库和导入库
dll —— 存放动态库
这里你可能奇怪include文件夹为何存放源码文件。我是出于调试程序的需要。因为有些时候要获取精确的出错信息,往往要在第三方的源码里调试。
编译的第三方库的采用这样的命名:
静态库命名:lib+工程名_编译器信息_版本信息_互操作性细节信息.lib,
这 里的互操作性细节信息初步分为debug版本、release版本以及多字节版本和unicode版本。
一个简单例子就是libpng_vc80_1_3_d.lib,表示这个是由VS 2005编译出来的png静态库,是debug版本(.lib前面用一个d来区分),库版本为V 1.3,采用多字节字符集编译。(对应的release版本命名为libpng_vc80_1_3.lib)。如果是unicode版本,名称则是libpng_vc80_1_3_ud.lib和libpng_vc80_1_3_u.lib (多了一个字母u)。
导 入库:工程名_编译器信息_版本信息_互操作性细节信息.lib,这里的互操作性细节信息初步分为debug版本还是release版本,一 个简单例子就是png_vc80_1_3_d.lib,表示这个是由VS 2005编译出来的png导入库,库版本为V 1.3。(对应的release版本命名为png_vc80_1_3.lib)。如果是unicode版本,名称则是png_vc80_1_3_ud.lib和png_vc80_1_3_u.lib (多了一个字母u)。动态库命名与导入库一样,不过是后缀名改为dll。
引用第三方库采用环境变量的做法,这种做法的好处具体见:为何用环境变量而不用相对路径来包含第三方库。具体是:
1. 右键单击“我的电脑”,出现“系统属性”对话框,选择“高级”选项卡,,然后单击“环境变量”,如下图:2. 单击“用户变量”下的“新建”按钮(你也可以新建系统环境变量,系统环境变量和用户环境变量的区别在于系统环境变量对所有用户有效,而用户环境变量只对当前用户有效),如下图:
3. 在弹出的对话框中输入环境变量名及磁盘路径,如下图:
4. 在VS 环境下使用,假如要包含tinyxml库的头文件,则在工程属性页上单击“C/C++”——“常规”选项卡,然后单击“附加包含目录”,如下图:
5. 在弹出的对话框中输入:$(THIRD_PARTY)\tinyxml_vc8\include,如下图:
附加包含库设置与之类似,在此不进行赘述。
另外需要指出的是在设置完环境变量之后打开的VS环境才能识别之前设置的环境变量,在设置之前打开的VS环境需要关闭重启才能识别。