每次构建,需要一个对应的版本号,用于记录二机制文件和源代码自己的关系。
现在大家都在用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*
可以看到,版本号正确,并且已经修改了指向