일반적으로 프로그램을 작성하면 해당 프로그램의 버전 정보를 입력해야 한다.
버전 정보는 해당 프로그램의 변경 이력을 나타내는 정보로 사용된다.
Visual C++의 MFC로 프로그램을 작성할 때 버전 정보는 프로젝트명.rc 파일 - Version - VS_VERSION_INFO에 위치한다.
- 깊숙한 곳에 있고 rc 파일 형식이라 버전 정보를 찾거나 수정하기가 불편하다.
- 스칼라의 경우 build.sbt, 파이썬의 경우 setup.py에 버전을 기입할 수 있어 편리하다.
버전 정보를 별도의 헤더 파일로 분리하여 rc 파일에 전달하면 보다 쉽게 버전 관리를 할 수 있다.
rc 파일 확인하기
프로젝트명.rc 파일에는 FILEVERSION, PRODUCTVERSION, FileVersion, ProductVersion 정보가 존재한다.
- FILEVERSION, PRODUCTVERSION은 PE 헤더에 입력 될 정보이다.
- FileVersion, ProductVersion은 Resource 영역에 입력 될 정보이다.
실제 프로젝트명.rc 파일을 편집기로 열어보면 아래와 같이 구성된 것을 확인할 수 있다.
version.h 파일 생성하기
Build 폴더에 version.h 파일을 생성하고, 버전 정보를 전처리기 (#define)로 지정한다.
코드는 다음과 같다.
TOSTR과 TOSTRVER은 정수형 버전 값을 1.2.3.4와 같은 문자열 형태로 변환하는데 사용한다.
#define VERSION_MAJOR 1
#define VERSION_MINOR 0
#define VERSION_PATCH 13
#define VERSION_BUILD 0
// 전달 받은 값을 문자열 타입으로 변환
#define TOSTR(str) #str
// 4개의 버전 정보를 단일 문자열을 반환
#define TOSTRVER(major, minor, patch, build) TOSTR(major.minor.patch.build)
#define FULL_VERSION TOSTRVER(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILD)
위와 같은 버전 체계를 유의적 버전이라고 하는데 자세한 내용은 아래를 참고한다.
유의적 버전 2.0.0
Semantic Versioning spec and website
semver.org
내용은 많은데 예전에 개발 부서에 있을 때에는 다음과 같은 의미로 사용했다.
- VERSION_MAJOR - 메이저 버전. 기존 버전과 하위 호환이 되지 않는 변경이 있는 경우
- VERSION_MINOR - 마이너 버전. 기존 버전과 하위 호환은 지원되나 확연히 구분되는 변경이 있는 경우
- VERSION_PATCH - 패치 버전. 기능이 추가되거나 제거 된 경우
- VERSION_BUILD - 버그를 수정하거나 기능에 영향을 주지 않는 변경이 있는 경우
rc2 파일 수정하기
먼저 프로젝트명.rc의 Version 부분을 잘라내기하고 프로젝트명.rc2의 아래 쪽에 추가한다.
- '여기에 수동으로 편집한 리소스를 추가합니다.' 아래 부분에 작성한다.
- #include "version.h"를 먼저 입력하여 생성한 version.h 파일을 사용할 것을 알려준다.
- FILEVERSION과 PRODUCTVERSION는 콤마(,)로 구분하므로 version.h에 정의한 각각의 값을 콤마 단위로 지정한다.
- FileVersion과 ProductVersion은 점(.)으로 구분하므로 version.h에 정의한 FULL_VERSION 값을 사용한다.
- VALUE로 지정 된 다른 항목들은 원하는 값으로 입력한다. 따옴표(" ")로 감싸 문자열 형태로 지정한다.
해당 내용을 저장하고 Visual Studio에서 해당 프로젝트를 열면, 프로젝트명.rc에서 Version 정보가 사라진 것을 확인할 수 있다.
Version 정보는 프로젝트명.rc2에 새로 정의한 Version 항목의 정보로 입력된다.
빌드하여 결과 확인
빌드를 진행하면 아래와 같이 지정한 값이 입력 된 것을 확인할 수 있다.
별도의 파일로 버전 정보를 관리하면 직관적으로 확인이 가능하므로, 형상 관리나 배포 관점에서 보다 유용하게 활용할 수 있다.
아래 문서를 참고하였다.
visual-studio - 하드 코딩 버전 관리에서 Visual Studio 2015를 중지하는 방법 - IT 툴 넷
visual-studio - 하드 코딩 버전 관리에서 Visual Studio 2015를 중지하는 방법 기사 출처 visual-studio visual-c++ visual-studio-2015
pythonq.com
'::: IT인터넷 :::' 카테고리의 다른 글
시놀로지 NAS에서 Virtual Machine Manager로 윈도우 사용하기 (2) | 2021.07.30 |
---|---|
exe 파일 Nexus에 배포하기 (0) | 2021.07.28 |
Visual C++ 프로젝트 폴더 구성하기 (0) | 2021.07.23 |
GitLab과 JIRA Cloud 연동하기 (0) | 2021.07.21 |
Visual Studio 2019 Community 개발 환경 구성 (0) | 2021.07.19 |