[Lazarus] embed git version info

Graeme Geldenhuys graeme at geldenhuys.co.uk
Tue Mar 26 12:10:46 CET 2013


On 2013-03-26 08:12, Xiangrong Fang wrote:
> 
> How can I embed git version info AUTOMATICALLY while I compile my program
> in lazarus, just like {$I %DATE%} ?

Use a pre-compile script (Project Options|Compiler
Options|Compilation|Execute Before) in combination with a include file.

Attached is what I use in my projects. You will need to modify the
script slightly to fit your project.

If you want something slightly less complex, simply output the 'git
describe' results to a include file, and use that in your project. You
can also use the 'git describe --abbrev=4' to get a slightly shorter output.


Regards,
  - Graeme -

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

-------------- next part --------------
#!/bin/sh

if test -f AUTHORS.txt
then
  VF=src/VERSION_FILE.inc
else
  VF=../../VERSION_FILE.inc
fi
DEF_VER=v0.6

LF='
'

# First see if there is a version file (included in release tarballs),
# then try git-describe, then default.
if test -f version
then
	VN=$(cat version) || VN="$DEF_VER"
elif test -d .git -o -f .git &&
	VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
	case "$VN" in
	*$LF*) (exit 1) ;;
	v[0-9]*)
		git update-index -q --refresh
		test -z "$(git diff-index --name-only HEAD --)" ||
		VN="$VN-dirty" ;;
	esac
then
	VN=$(echo "$VN" | sed -e 's/-/./g');
else
	VN="$DEF_VER"
fi

VN=$(expr "$VN" : v*'\(.*\)')

if test -r $VF
then
	VC=$(sed -e 's/^FPGUI_VERSION = //' <$VF)
else
	VC=unset
fi
test "$VN" = "$VC" || {
	echo >&2 "FPGUI_VERSION = '$VN';"
	echo "FPGUI_VERSION = '$VN';" >$VF
}




More information about the Lazarus mailing list