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)。

                        

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

     

     

     

     

     

     

     

     


  • 相关阅读:
    [算法练习]序列最大和
    [算法练习]最长公共子序列
    [算法练习]最长公共子串(LCS)
    [算法练习] 把字符串转换成整数
    [算法练习] 反转链表
    [算法练习] 正整数数制转换
    自己调用NTDLL函数
    [经典算法] 排列组合-N元素集合的所有子集(二)
    [经典算法] 排列组合-N元素集合的所有子集(一)
    【机器学习】主成分分析法 PCA (I)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470837.html
Copyright © 2011-2022 走看看