每次构建,需要一个对应的版本号,用于记录二机制文件和源代码自己的关系。

现在大家都在用CI,在CI构建中,获取到版本号,但没有在CI中构建呢?看来这个版本号获取还要下一层。我们可以在MAKEFILE中获取版本号,将这个信息传递到MAKE过程中。

我们使用了CMAKE构建一个项目。获取版本的代码如下。

 

IF(EXISTS "${ROOT_DIR}/.svn/")

  FIND_PACKAGE(Subversion)

  IF(SUBVERSION_FOUND)

    Subversion_WC_INFO(${ROOT_DIR} Project)

    SET(VERSION_REVISION ${Project_WC_REVISION})

  ENDIF(SUBVERSION_FOUND)

ENDIF(EXISTS "${ROOT_DIR}/.svn/")       

 

 红色部分即为SVN的版本号,对于到源代码的版本。在构建目标文件的时候,使用这个信息。

SET_TARGET_PROPERTIES(public_common PROPERTIES VERSION 1.7.${VERSION_REVISION} SOVERSION 1)

运行结果:

 

build%ll *security*

lrwxrwxrwx 1 build usergrp     30 12-24 13:08 libpublic_common_security.so -> libpublic_common_security.so.1*

lrwxrwxrwx 1 build usergrp     39 12-24 13:08 libpublic_common_security.so.1 -> libpublic_common_security.so.1.7.265234*

-rwxrwxr-x 1 build usergrp 156538 12-24 13:05 libpublic_common_security.so.1.7.*

-rwxrwxr-x 1 build usergrp 156538 12-24 13:08 libpublic_common_security.so.1.7.265234*

 

可以看到,版本号正确,并且已经修改了指向