Add version
parent
8b41090149
commit
64c1ff3c2a
|
@ -0,0 +1,17 @@
|
|||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/../_cmake/common.cmake)
|
||||
include(${CMAKE_INC_DIR}/version.cmake)
|
||||
|
||||
# Variables for application
|
||||
|
||||
set(RUNTIME_OUTPUT_NAME ${PROJECT_NAME})
|
||||
|
||||
configure_file(${CMAKE_INC_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY)
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DISTRIB_DIR})
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
configure_file(${CMAKE_INC_DIR}/versioninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc @ONLY)
|
||||
endif()
|
||||
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(SOFT_DEVELOPER "Evgeny Teterin (nayk)")
|
||||
set(DEVELOPER_DOMAIN "poseon.ru")
|
||||
|
||||
set(ROOT_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ )
|
||||
|
||||
cmake_path(NORMAL_PATH ROOT_PROJECT_DIR OUTPUT_VARIABLE ROOT_PROJECT_DIR)
|
||||
|
||||
set(CMAKE_INC_DIR
|
||||
${ROOT_PROJECT_DIR}_cmake
|
||||
)
|
||||
|
||||
set(RESOURCES_DIR
|
||||
${ROOT_PROJECT_DIR}_resources
|
||||
)
|
||||
|
||||
set(SOURCES_DIR
|
||||
${ROOT_PROJECT_DIR}sources
|
||||
)
|
||||
|
||||
set(COMMON_SOURCES_DIR
|
||||
${ROOT_PROJECT_DIR}_include
|
||||
)
|
||||
|
||||
if (${CMAKE_SIZEOF_VOID_P} STREQUAL 4)
|
||||
set(DIR_PREFIX "32")
|
||||
elseif (${CMAKE_SIZEOF_VOID_P} STREQUAL 8)
|
||||
set(DIR_PREFIX "64")
|
||||
endif ()
|
||||
|
||||
set(DISTRIB_DIR
|
||||
${ROOT_PROJECT_DIR}_distrib/${CMAKE_SYSTEM_NAME}_${DIR_PREFIX}-bit
|
||||
)
|
||||
|
||||
message(STATUS "Project '${PROJECT_NAME}' compiler ${CMAKE_CXX_COMPILER} version: ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
message(STATUS "Project '${PROJECT_NAME}' distrib dir: '${DISTRIB_DIR}'")
|
||||
message(STATUS "Variable CMAKE_PREFIX_PATH: '${CMAKE_PREFIX_PATH}'")
|
||||
message(STATUS "Variable CMAKE_SYSTEM_LIBRARY_PATH: '${CMAKE_SYSTEM_LIBRARY_PATH}'")
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(SYSTEM_INCLUDE_DIR "${CMAKE_PREFIX_PATH}/include")
|
||||
else ()
|
||||
set(SYSTEM_INCLUDE_DIR "/usr/include")
|
||||
endif ()
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#define PROG_NAME "@PROJECT_NAME@"
|
||||
#define PROG_VERSION "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@@PROJECT_VERSION_TWEAK@"
|
||||
#define PROG_CAPTION "@PROJECT_NAME@ v"
|
||||
#define PROG_DESCRIPTION "@PROJECT_DESCRIPTION@"
|
||||
#define SOFT_DEVELOPER "@SOFT_DEVELOPER@"
|
||||
#define DEVELOPER_DOMAIN "@DEVELOPER_DOMAIN@"
|
||||
#define BUILD_DATE "@BUILD_DATE@"
|
||||
#define BUILD_NUM "@BUILD_NUM@"
|
||||
#define ORIGINAL_FILE_NAME "@ORIGINAL_FILE_NAME@"
|
|
@ -0,0 +1,19 @@
|
|||
# Variables for generating the version. Used in the application (config.h file)
|
||||
#
|
||||
# BUILD_DATE - date in format 'yyyy-mm-dd H:M'
|
||||
# BUILD_NUM - number of build (days of year)
|
||||
# PROJECT_VERSION_PATCH - in format 'yy'
|
||||
#
|
||||
# Application version format: 'MAJOR.MINOR.PROJECT_VERSION_PATCH.BUILD_NUM'
|
||||
|
||||
string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M")
|
||||
|
||||
string(TIMESTAMP BUILD_NUM "%j")
|
||||
|
||||
math(EXPR BUILD_NUM ${BUILD_NUM})
|
||||
|
||||
string(SUBSTRING ${BUILD_DATE} 2 2 YEAR_STR)
|
||||
|
||||
set(PROJECT_VERSION_PATCH ${YEAR_STR})
|
||||
|
||||
set(ORIGINAL_FILE_NAME ${RUNTIME_OUTPUT_NAME})
|
|
@ -0,0 +1,34 @@
|
|||
1 TYPELIB "versioninfo.rc"
|
||||
|
||||
1 VERSIONINFO
|
||||
FILEVERSION @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @BUILD_NUM@
|
||||
PRODUCTVERSION @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @BUILD_NUM@
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "@SOFT_DEVELOPER@"
|
||||
VALUE "FileDescription", "@PROJECT_DESCRIPTION@"
|
||||
VALUE "FileVersion","@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@"
|
||||
VALUE "InternalName", "@PROJECT_NAME@"
|
||||
VALUE "LegalCopyright", "Copyright (c) @YEAR_STR@ @SOFT_DEVELOPER@"
|
||||
VALUE "OriginalFilename", "@ORIGINAL_FILE_NAME@"
|
||||
VALUE "ProductName", "@PROJECT_NAME@"
|
||||
VALUE "ProductVersion","@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.@BUILD_NUM@"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
|
@ -0,0 +1 @@
|
|||
IDI_ICON1 ICON "main.ico"
|
|
@ -1,35 +1,55 @@
|
|||
cmake_minimum_required(VERSION 3.24)
|
||||
|
||||
project(launcher LANGUAGES CXX)
|
||||
project(launcher
|
||||
VERSION 1.0
|
||||
DESCRIPTION "Launcher"
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/../_cmake/app_settings.cmake)
|
||||
|
||||
# Настройки для MSVC
|
||||
if(MSVC)
|
||||
# Статическая линковка CRT
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
set(PROJECT_SOURCES
|
||||
main.cpp
|
||||
)
|
||||
|
||||
# Оптимизация размера и скорости
|
||||
add_compile_options(
|
||||
"$<$<CONFIG:RELEASE>:/Os>" # Оптимизация по размеру
|
||||
"$<$<CONFIG:RELEASE>:/Oy>" # Отключение кадров стека
|
||||
"$<$<CONFIG:RELEASE>:/GL>" # Включение LTO
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
|
||||
set(PROJECT_RC_FILES
|
||||
${RESOURCES_DIR}/main_icon.rc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/versioninfo.rc
|
||||
)
|
||||
|
||||
# Настройки линковщика
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /OPT:REF /OPT:ICF")
|
||||
endif()
|
||||
# Настройки для MSVC
|
||||
if(MSVC)
|
||||
# Статическая линковка CRT
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
|
||||
# Оптимизация размера и скорости
|
||||
add_compile_options(
|
||||
"$<$<CONFIG:RELEASE>:/Os>" # Оптимизация по размеру
|
||||
"$<$<CONFIG:RELEASE>:/Oy>" # Отключение кадров стека
|
||||
"$<$<CONFIG:RELEASE>:/GL>" # Включение LTO
|
||||
)
|
||||
|
||||
# Настройки линковщика
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /OPT:REF /OPT:ICF")
|
||||
endif()
|
||||
|
||||
add_executable(${PROJECT_NAME} WIN32
|
||||
${PROJECT_SOURCES}
|
||||
${PROJECT_RC_FILES}
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE Kernel32.lib
|
||||
PRIVATE shlwapi.lib
|
||||
)
|
||||
|
||||
else ()
|
||||
|
||||
#target_compile_options(${PROJECT_NAME} PRIVATE -Werror -Wall -Wextra -Wpedantic)
|
||||
|
||||
endif ()
|
||||
|
||||
add_executable(${PROJECT_NAME} WIN32 main.cpp)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE Kernel32.lib
|
||||
PRIVATE shlwapi.lib
|
||||
)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#ifdef WIN32
|
||||
// Для Windows MSVC ============================================================
|
||||
#include <windows.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -198,4 +200,13 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|||
return 0;
|
||||
}
|
||||
//==============================================================================
|
||||
#else
|
||||
// Для Linux GCC ===============================================================
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#endif
|
||||
//==============================================================================
|
||||
|
|
Loading…
Reference in New Issue