zoukankan      html  css  js  c++  java
  • boost库命名规则的优点

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

     

             我们编译出来的二进制库文件该如何命名呢?当我经验尚浅时,发现这个不是问题——就以工程名来命名呗。但慢慢发现这种命名是有很多问题的(特别是当你升级编译器时,比如从VS2005升级到VS2010时,或者是软件打包时):比如debug版本和release版本的库区分不开,不同版本的编译器编出的库区分不开(很多时候面对一个库你不知道它是VC6.0、VS 2005还是VS 2008编出来的),静态库还是导入库区分不开,代码库的版本不知道……可能你会说:不是有个depends工具,用它打开查看一下就知道了。问题一是假如库文件很多时,谁愿意一一去查看;二是静态库还是导入库靠depends工具是判断不出来的。而在开发时混用不同版本的库文件,会造成很多莫名其妙的问题。

     

            如何解决这个问题?唯有靠规范的命名。怎样才算是规范的库文件命名?我觉得指导原则应该是见名知意。如果根据见名知意这个原则来衡量,我发现boost库是做得比较规范的。关于boost库的命名规则,具体请见这篇文章:Boost 库命名规则(翻译)。boost库的命名,涵括了下面几方面信息:

    1. 库的功能信息(即是序列化库、正则库还是其它功能的库)
    2. 静态库还是导入库(静态库以lib开头)
    3. 构建该库的具体编译器信息
    4. 线程标签(是多线程还是单线程)
    5. 影响库与其它编译代码的互操作性的细节的编码(debug版本还是release版本,是否使用了STLPORT)
    6. boost库的版本信息

     

            面对这样规范的命名,你还会混用吗?据此我也简单制定了一个Windows环境下的库文件的命名规则:

     

    静态库命名:lib+工程名_编译器信息_版本信息_互操作性细节信息.lib,这里的互操作性细节信息初步分为debug版本还是release版本,一个简单例子就是libpng_vc80_1_3_d.lib,表示这个是由VS 2005编译出来的png静态库,是debug版本(.lib前面用一个d来区分),库版本为V 1.3。(对应的release版本命名为libpng_vc80_1_3.lib)。

     

    导入库和动态库命名:工程名_编译器信息_版本信息_互操作性细节信息.lib,这里的互操作性细节信息初步分为debug版本还是release版本,一个简单例子就是png_vc80_1_3_d.lib,表示这个是由VS 2005编译出来的png导入库,库版本为V 1.3。(对应的release版本命名为png_vc80_1_3.lib)。

                        

             之所以不加线程信息,是因为我们现在开发的基本是多线程程序,所以默认构建多线程库。线程信息就没必要加了。

     

     

     

     

     

     

     

     


  • 相关阅读:
    Java中的责任链设计模式,太牛了!
    醒醒吧,世界上有技术驱动型公司!
    现身说法:37岁老码农找工作
    如何快速安全的插入千万条数据?
    这个函数,1987年在这了,别动它!
    word自动备份,word误删内容恢复
    给Ubuntu 16.04更换更新源
    Django分别使用Memcached和Redis作为缓存的配置(Linux环境)
    Pycharm远程连接服务器,并在本地调试服务器代码
    Navicat远程连接阿里云服务器的mysql
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470837.html
Copyright © 2011-2022 走看看