728x90
시작 전에..
CMAKE는 주로 크로스 컴파일 환경이기에 윈도우에 파일속성에서 보이는 파일버전을 신경 쓰지 않았다가 필요에 의해 찾아보니 은근 정보 찾기가 힘들었다
1. cmake로 빌드할 프로젝트가 있는 경로에 version.rc.in파일을 생성한다
2. 파일에 아래 내용을 붙여 넣는다
#include "Windows.h"
/* CMakeLists.txt 에서 선언할 변수 MY_PRODUCT_NUMBER, MY_PRODUCT_VERSION, MY_BUILD_NUMBER */
#define VER_FILEVERSION @MY_PRODUCT_NUMBER@,@MY_PRODUCT_VERSION@,@MY_BUILD_NUMBER@,0
#define VER_FILEVERSION_STR "@MY_PRODUCT_NUMBER@.@MY_PRODUCT_VERSION@.@MY_BUILD_NUMBER@.0\0"
#define VER_PRODUCTVERSION @MY_PRODUCT_NUMBER@,@MY_PRODUCT_VERSION@,@MY_BUILD_NUMBER@,0
#define VER_PRODUCTVERSION_STR "@MY_PRODUCT_NUMBER@.@MY_PRODUCT_VERSION@.@MY_BUILD_NUMBER@\0"
#ifndef DEBUG
#define VER_DEBUG 0
#else
#define VER_DEBUG VS_FF_DEBUG
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS (VS_FF_PRIVATEBUILD|VS_FF_PRERELEASE|VER_DEBUG)
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
/* 버전 외의 아래 정보들도 입력 가능
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR */
END
END
BLOCK "VarFileInfo"
BEGIN
/* The following line should only be modified for localized versions. */
/* It consists of any number of WORD,WORD pairs, with each pair */
/* describing a language,codepage combination supported by the file. */
/* */
/* For example, a file might have values "0x409,1252" indicating that it */
/* supports English language (0x409) in the Windows ANSI codepage (1252). */
VALUE "Translation", 0x409, 1252
END
END
*위에 주석되어 있는 내용 참조
3. CMakeLists.txt에서 해당 파일을 로드한다
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in
${CMAKE_CURRENT_BINARY_DIR}/version.rc
@ONLY
# version.rc.in파일이 동일한 경로에 없다면 해당경로로 수정
)
4. CMakeLists.txt에서 버전 변수값을 세팅한다
set(MY_PRODUCT_NUMBER 0)
set(MY_PRODUCT_VERSION 00)
set(MY_BUILD_NUMBER 01)
끝
+ 추가로 Cmake에서 관리하는 버전 세팅하기(윈도우 파일속성과 관련 없음)
project(projectname
VERSION ${MY_PRODUCT_NUMBER}.${MY_PRODUCT_VERSION}.${MY_BUILD_NUMBER}
)
CMake 참 어렵고 힘들다.. IDE만세 VisualStudio는 신이다!!!
참고페이지
https://learn.microsoft.com/ko-kr/windows/win32/menurc/versioninfo-resource?redirectedfrom=MSDN
728x90
'운동하는 개발자 > Windows' 카테고리의 다른 글
커맨드 명령어로 파일 해시 추출하기 (파일이 동일 한지 확인 방법) (0) | 2023.07.06 |
---|---|
signtool error: The provided cross certificate would not be present in the certificate chain. (0) | 2023.05.15 |
윈도우 텍스트 파일 내용으로 검색 하는 법 (0) | 2023.05.04 |
Windows에서 NamedPipe 통신 client 테스트하기 (0) | 2023.05.03 |
windows 10, 11 환경 변수 등록(adb.exe 환경 변수 등록하기) (0) | 2022.12.15 |