当前位置: 首页 > news >正文

统一管理磁盘上的开源代码

作者:朱金灿

来源: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环境需要关闭重启才能识别。









转载于:https://www.cnblogs.com/lanzhi/archive/2012/03/15/6470833.html

相关文章:

  • 在自己实现的ios画图程序中如何实现橡皮擦功能
  • visual c++ 6.0中文企业版卸载后重装失败的解决办法
  • 【转】孩子们应该学习的9种基本技能
  • SAP-账号维护--登陆篇
  • centos 5.7_64位下安装FastDFS_v3.06分布式文件系统
  • Verizon:2012年数据破坏调查报告
  • MySQL数据库备份的10个教程
  • PHP数组操作——取数组最后一个值
  • php---编译安装 PHP 的 Redis 扩展
  • 关于Installshield中Ie8\Ie9\SQL Server 2008 R2 Native Client等Prq文件在线下载地址
  • SQL Server 2008中增强的汇总技巧
  • cocos2d Labels and Fonts 标签和字体(附:关于Hiero的二三事)
  • ios5之ipad开发之分割试图与弹出层的使用
  • After Interview of Mstar
  • 创业路上的成功与快乐
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • C# 免费离线人脸识别 2.0 Demo
  • CSS实用技巧
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Iterator 和 for...of 循环
  • JavaScript HTML DOM
  • JavaScript设计模式与开发实践系列之策略模式
  • Java方法详解
  • Rancher如何对接Ceph-RBD块存储
  • React Transition Group -- Transition 组件
  • underscore源码剖析之整体架构
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 关于字符编码你应该知道的事情
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 使用权重正则化较少模型过拟合
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 硬币翻转问题,区间操作
  • No resource identifier found for attribute,RxJava之zip操作符
  • 《码出高效》学习笔记与书中错误记录
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (26)4.7 字符函数和字符串函数
  • (二)正点原子I.MX6ULL u-boot移植
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十) 初识 Docker file
  • (一) storm的集群安装与配置
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net下的富文本编辑器FCKeditor的配置方法
  • .Net中的设计模式——Factory Method模式
  • .pop ----remove 删除
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题