-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(app): add resources for executable
add icon add details
- Loading branch information
1 parent
311ff10
commit 7cc3d88
Showing
5 changed files
with
260 additions
and
2 deletions.
There are no files selected for viewing
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
Binary file not shown.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
#pragma once | ||
|
||
#ifndef PRODUCT_VERSION_MAJOR | ||
#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ | ||
#endif | ||
|
||
#ifndef PRODUCT_VERSION_MINOR | ||
#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@ | ||
#endif | ||
|
||
#ifndef PRODUCT_VERSION_PATCH | ||
#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@ | ||
#endif | ||
|
||
#ifndef PRODUCT_VERSION_BUILD | ||
#define PRODUCT_VERSION_BUILD @PRODUCT_VERSION_REVISION@ | ||
#endif | ||
|
||
#ifndef FILE_VERSION_MAJOR | ||
#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ | ||
#endif | ||
|
||
#ifndef FILE_VERSION_MINOR | ||
#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@ | ||
#endif | ||
|
||
#ifndef FILE_VERSION_PATCH | ||
#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@ | ||
#endif | ||
|
||
#ifndef FILE_VERSION_BUILD | ||
#define FILE_VERSION_BUILD @PRODUCT_VERSION_REVISION@ | ||
#endif | ||
|
||
#ifndef __TO_STRING | ||
#define __TO_STRING_IMPL(x) #x | ||
#define __TO_STRING(x) __TO_STRING_IMPL(x) | ||
#endif | ||
|
||
#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR) | ||
#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH) | ||
#define PRODUCT_VERSION_FULL_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(PRODUCT_VERSION_BUILD) | ||
#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,PRODUCT_VERSION_BUILD | ||
#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_FULL_STR "\0" | ||
|
||
#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR) | ||
#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH) | ||
#define FILE_VERSION_FULL_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(FILE_VERSION_BUILD) | ||
#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,FILE_VERSION_BUILD | ||
#define FILE_VERSION_RESOURCE_STR FILE_VERSION_FULL_STR "\0" | ||
|
||
#ifndef PRODUCT_ICON | ||
#define PRODUCT_ICON "@PRODUCT_ICON@" | ||
#endif | ||
|
||
#ifndef PRODUCT_COMMENTS | ||
#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_COMPANY_NAME | ||
#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_COMPANY_COPYRIGHT | ||
#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_FILE_DESCRIPTION | ||
#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_INTERNAL_NAME | ||
#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_ORIGINAL_FILENAME | ||
#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0" | ||
#endif | ||
|
||
#ifndef PRODUCT_BUNDLE | ||
#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0" | ||
#endif |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#include "VersionInfo.h" | ||
|
||
#if defined(__MINGW64__) || defined(__MINGW32__) | ||
// MinGW-w64, MinGW | ||
#if defined(__has_include) && __has_include(<winres.h>) | ||
#include <winres.h> | ||
#else | ||
#include <afxres.h> | ||
#include <winresrc.h> | ||
#endif | ||
#else | ||
// MSVC, Windows SDK | ||
#include <winres.h> | ||
#endif | ||
|
||
IDI_ICON1 ICON PRODUCT_ICON | ||
|
||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT | ||
|
||
VS_VERSION_INFO VERSIONINFO | ||
FILEVERSION FILE_VERSION_RESOURCE | ||
PRODUCTVERSION PRODUCT_VERSION_RESOURCE | ||
FILEFLAGSMASK 0x3fL | ||
#ifdef _DEBUG | ||
FILEFLAGS 0x1L | ||
#else | ||
FILEFLAGS 0x0L | ||
#endif | ||
FILEOS 0x4L | ||
FILETYPE 0x1L | ||
FILESUBTYPE 0x0L | ||
BEGIN | ||
BLOCK "StringFileInfo" | ||
BEGIN | ||
BLOCK "000904b0" | ||
BEGIN | ||
VALUE "Comments", PRODUCT_COMMENTS | ||
VALUE "CompanyName", PRODUCT_COMPANY_NAME | ||
VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION | ||
VALUE "FileVersion", FILE_VERSION_RESOURCE_STR | ||
VALUE "InternalName", PRODUCT_INTERNAL_NAME | ||
VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT | ||
VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME | ||
VALUE "ProductName", PRODUCT_BUNDLE | ||
VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR | ||
END | ||
END | ||
BLOCK "VarFileInfo" | ||
BEGIN | ||
VALUE "Translation", 0x9, 1200 | ||
END | ||
END |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
include (CMakeParseArguments) | ||
|
||
set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR}) | ||
|
||
# generate_product_version() function | ||
# | ||
# This function uses VersionInfo.in template file and VersionResource.rc file | ||
# to generate WIN32 resource with version information and general resource strings. | ||
# | ||
# Usage: | ||
# generate_product_version( | ||
# SomeOutputResourceVariable | ||
# NAME MyGreatProject | ||
# ICON ${PATH_TO_APP_ICON} | ||
# VERSION_MAJOR 2 | ||
# VERSION_MINOR 3 | ||
# VERSION_PATH ${BUILD_COUNTER} | ||
# VERSION_REVISION ${BUILD_REVISION} | ||
# ) | ||
# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server. | ||
# | ||
# You can use generated resource for your executable targets: | ||
# add_executable(target-name ${target-files} ${SomeOutputResourceVariable}) | ||
# | ||
# You can specify resource strings in arguments: | ||
# NAME - name of executable (no defaults, ex: Microsoft Word) | ||
# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office) | ||
# ICON - path to application icon (${CMAKE_SOURCE_DIR}/product.ico by default) | ||
# VERSION_MAJOR - 1 is default | ||
# VERSION_MINOR - 0 is default | ||
# VERSION_PATCH - 0 is default | ||
# VERSION_REVISION - 0 is default | ||
# COMPANY_NAME - your company name (no defaults) | ||
# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default | ||
# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default | ||
# ORIGINAL_FILENAME - ${NAME} is default | ||
# INTERNAL_NAME - ${NAME} is default | ||
# FILE_DESCRIPTION - ${NAME} is default | ||
function(generate_product_version outfiles) | ||
set (options) | ||
set (oneValueArgs | ||
NAME | ||
BUNDLE | ||
ICON | ||
VERSION_MAJOR | ||
VERSION_MINOR | ||
VERSION_PATCH | ||
VERSION_REVISION | ||
VERSION_FULL | ||
COMPANY_NAME | ||
COMPANY_COPYRIGHT | ||
COMMENTS | ||
ORIGINAL_FILENAME | ||
INTERNAL_NAME | ||
FILE_DESCRIPTION) | ||
set (multiValueArgs) | ||
cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | ||
|
||
if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "") | ||
set(PRODUCT_BUNDLE "${PRODUCT_NAME}") | ||
endif() | ||
if (NOT PRODUCT_ICON OR "${PRODUCT_ICON}" STREQUAL "") | ||
set(PRODUCT_ICON "${CMAKE_SOURCE_DIR}/product.ico") | ||
endif() | ||
|
||
if (PRODUCT_VERSION_FULL) | ||
string(REPLACE "." ";" VERSION_LIST ${PRODUCT_VERSION_FULL}) | ||
list(GET VERSION_LIST 0 PRODUCT_VERSION_MAJOR) | ||
list(GET VERSION_LIST 1 PRODUCT_VERSION_MINOR) | ||
list(GET VERSION_LIST 2 PRODUCT_VERSION_PATCH) | ||
set(PRODUCT_VERSION_REVISION 0) | ||
else() | ||
if (NOT PRODUCT_VERSION_MAJOR EQUAL 0 AND (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "")) | ||
set(PRODUCT_VERSION_MAJOR 1) | ||
endif() | ||
if (NOT PRODUCT_VERSION_MINOR EQUAL 0 AND (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "")) | ||
set(PRODUCT_VERSION_MINOR 0) | ||
endif() | ||
if (NOT PRODUCT_VERSION_PATCH EQUAL 0 AND (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "")) | ||
set(PRODUCT_VERSION_PATCH 0) | ||
endif() | ||
if (NOT PRODUCT_VERSION_REVISION EQUAL 0 AND (NOT PRODUCT_VERSION_REVISION OR "${PRODUCT_VERSION_REVISION}" STREQUAL "")) | ||
set(PRODUCT_VERSION_REVISION 0) | ||
endif() | ||
endif() | ||
|
||
if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "") | ||
string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y") | ||
set(PRODUCT_COMPANY_COPYRIGHT "${PRODUCT_COMPANY_NAME} (C) Copyright ${PRODUCT_CURRENT_YEAR}") | ||
endif() | ||
if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "") | ||
set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}") | ||
endif() | ||
if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "") | ||
set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}") | ||
endif() | ||
if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "") | ||
set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}") | ||
endif() | ||
if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "") | ||
set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}") | ||
endif() | ||
|
||
set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h) | ||
set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc) | ||
configure_file( | ||
${GenerateProductVersionCurrentDir}/VersionInfo.in | ||
${_VersionInfoFile} | ||
@ONLY) | ||
configure_file( | ||
${GenerateProductVersionCurrentDir}/VersionResource.rc | ||
${_VersionResourceFile} | ||
COPYONLY) | ||
list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile}) | ||
set (${outfiles} ${${outfiles}} PARENT_SCOPE) | ||
endfunction() |