Created
April 29, 2014 16:51
-
-
Save grassator/11405930 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# If there is no version tag in git this one will be used | |
VERSION = 0.1.0 | |
# Need to discard STDERR so get path to NULL device | |
win32 { | |
NULL_DEVICE = NUL # Windows doesn't have /dev/null but has NUL | |
} else { | |
NULL_DEVICE = /dev/null | |
} | |
# Need to call git with manually specified paths to repository | |
BASE_GIT_COMMAND = git --git-dir $$PWD/.git --work-tree $$PWD | |
# Trying to get version from git tag / revision | |
GIT_VERSION = $$system($$BASE_GIT_COMMAND describe --always --tags 2> $$NULL_DEVICE) | |
# Check if we only have hash without version number | |
!contains(GIT_VERSION,\d+\.\d+\.\d+) { | |
# If there is nothing we simply use version defined manually | |
isEmpty(GIT_VERSION) { | |
GIT_VERSION = $$VERSION | |
} else { # otherwise construct proper git describe string | |
GIT_COMMIT_COUNT = $$system($$BASE_GIT_COMMAND rev-list HEAD --count 2> $$NULL_DEVICE) | |
isEmpty(GIT_COMMIT_COUNT) { | |
GIT_COMMIT_COUNT = 0 | |
} | |
GIT_VERSION = $$VERSION-$$GIT_COMMIT_COUNT-g$$GIT_VERSION | |
} | |
} | |
# Turns describe output like 0.1.5-42-g652c397 into "0.1.5.42.652c397" | |
GIT_VERSION ~= s/-/"." | |
GIT_VERSION ~= s/g/"" | |
# Now we are ready to pass parsed version to Qt | |
VERSION = $$GIT_VERSION | |
win32 { # On windows version can only be numerical so remove commit hash | |
VERSION ~= s/\.\d+\.[a-f0-9]{6,}// | |
} | |
# Adding C preprocessor #DEFINE so we can use it in C++ code | |
# also here we want full version on every system so using GIT_VERSION | |
DEFINES += GIT_VERSION=\\\"$$GIT_VERSION\\\" | |
# By default Qt only uses major and minor version for Info.plist on Mac. | |
# This will rewrite Info.plist with full version | |
macx { | |
INFO_PLIST_PATH = $$shell_quote($${OUT_PWD}/$${TARGET}.app/Contents/Info.plist) | |
QMAKE_POST_LINK += /usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $${VERSION}\" $${INFO_PLIST_PATH} | |
} |
I realize this is a couple of years old, but if anyone else lands here this might be useful.
You can replace the whole !contains(GIT_VERSION,\d+\.\d+\.\d+) {
section that is recreating the tag-num-ghash
format if you simply change the initial git command from:
git describe --always --tags
to:
git describe --long
This will result in git describe
always returning it in the tag-num-ghash
format. (Reference: the git docs)
Qual o melhor script?
Hi.
Please, check my repo. Set Qt App version from git.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It seems, instead of
CFBundleShortVersionString
, I can also useCFBundleGetInfoString
; this is set to "Created by Qt/QMake" by default and is displayed as the contents of the 'Version' field in the Mac OS X info dialog (the one displayed by right-clicking the.app
application file and selecting 'Get Info').