<QT 4.8>
QCoreApplication 클래스에는 applicationVersion() 라는 static 메서드가 있습니다.
QString을 반환하는데요.. setApplicationVersion(QString) 을 해주지 않으면
빈 문자열을 반환합니다.
버전 정보를 직접 넣어줘야 한다는 이야기 인데요..
버전 정보를 *.h나 *.cpp에 넣으면 버전만 수정할 때 리비전이 보기 싫게 되는 경우가 생깁니다.
이럴 때를 위해서 코드에서 수정하기보다는..
*.pro 파일에서 DEFINES 키워드를 사용해서 추가하는 것을 권장합니다.
DEFINES 에 추가할 때는 그냥 따옴표를 붙여서는 안됩니다.
그냥 해보니 숫자로 인식하더군요..
ex) DEFINES += APP_VERSION="0.0.1"
위의 경우 아래와 같이 10진수에 소수점 표기가 너무 많다고 빌드 에러가 날겁니다.
-1: error: too many decimal points in number
이를 해결하기 위해서는 아래와 같이 하시면 됩니다.
ex) DEFINES += APP_VERSION=\\\"0.0.1\\\"
*.pro 파일에 대한 키워드 도움말을 보시면 VERSION 이라는 키워드가 있는데요,
이 키워드는 윈도우에서 파일 등록 정보를 볼 때 나타나는 버전 정보를 나타내는 문자열입니다.
결국 아래처럼 수정이 필요 했습니다.
ex) VERSION = 1.0.0 # 이 키워드는 1.0.0 을 그대로 인식하고 있습니다.
DEFINES += APP_VERSION=\\\"$$VERSION\\\" # \\\" 를 붙이지 않으면 역시 숫자로 인식
이후 main.cpp 의 main() 에 QCoreApplication::setApplicationVersion(APP_VERSION); 을 추가하면
QCoreApplication::applicationVersion() 으로 *.pro에 입력한 버전 정보를 가져올 수 있습니다.
VERSION 을 추가한 효과로 아래처럼 윈도우 등록 정보에서 버전 정보가 나타나게 됩니다.
덧붙여서 가능하면 qmake와 클린 빌드를 해주세요.
*.pro 의 갱신이 제대로 안되는 경우가 발견이 되었습니다.
참고:
http://www.openguru.com/2009/11/qt-best-way-to-set-application-version.html
'QT' 카테고리의 다른 글
5.10.1 static build error (2) | 2018.03.23 |
---|---|
undefined reference to 'vtable for...' (0) | 2016.05.19 |
반투명 그릴 때 배경 잔상 문제 (0) | 2016.05.11 |
libwinpthread 가 계속 동적 빌드만 될 때 (0) | 2016.04.28 |
디버깅 매크로 (0) | 2016.04.19 |