if (POLICY CMP0057) cmake_policy(SET CMP0057 NEW) endif() set(__prop_names "LABEL;VERSION;FULLNAME;COMPANY;ICON;INFO") include(TargetArch) if (NOT MY_ARCH) target_architecture(MY_ARCH) endif() # usage: set_deploy_property( NAME [NAME [...]]) # # Set target deploy property, where NAME one of: # * LABEL - application icon name # * VERSION - version # * FULLNAME - package name in format "*.*.*" # * COMPANY - company name # * ICON - icon file # * INFO - additional info # # You can setup several properties in one command # macro(set_deploy_property _T) set(_name) set(_is_name 1) foreach(_i ${ARGN}) if (_is_name) set(_is_name 0) if (_i IN_LIST __prop_names) else() message(FATAL_ERROR "Invalid property name \"${_i}\"!") endif() set(_name ${_i}) else() set(_is_name 1) set(${_T}_${_name} ${_i}) endif() endforeach() endmacro() # usage: make_rc( ) # # Generate Windows *.rc file from deploy properties # and return file path to # # You should set deploy properties before # call this macro, see "set_deploy_property()" # macro(make_rc _T _out) if (WIN32) set(WINDOWS_RC_FULLNAME "${${_T}_FULLNAME}") set(WINDOWS_RC_VERSION "${${_T}_VERSION}") set(WINDOWS_RC_LABEL "${${_T}_LABEL}") set(WINDOWS_RC_COMPANY "${${_T}_COMPANY}") set(WINDOWS_RC_INFO "${${_T}_INFO}") get_filename_component(WINDOWS_RC_ICON "${${_T}_ICON}" REALPATH BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(_rc_file "${CMAKE_CURRENT_BINARY_DIR}/winres.rc") file(WRITE ${_rc_file} "# if defined(UNDER_CE) # include # else # include # endif 1 ICON \"${WINDOWS_RC_ICON}\" VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x9L #else FILEFLAGS 0x8L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK \"StringFileInfo\" BEGIN BLOCK \"040904b0\" BEGIN VALUE \"Comments\", \"\\0\" VALUE \"CompanyName\", \"${WINDOWS_RC_COMPANY}\\0\" VALUE \"FileDescription\", \"${WINDOWS_RC_INFO}\\0\" VALUE \"FileVersion\", \"${WINDOWS_RC_VERSION}\\0\" VALUE \"InternalName\", \"${WINDOWS_RC_FULLNAME}\\0\" VALUE \"LegalTrademarks\", \"\\0\" VALUE \"OriginalFilename\", \"${_T}.exe\\0\" VALUE \"PrivateBuild\", \"1\\0\" VALUE \"ProductName\", \"${WINDOWS_RC_LABEL}\\0\" VALUE \"ProductVersion\", \"${WINDOWS_RC_VERSION}\\0\" VALUE \"SpecialBuild\", \"\\0\" END END BLOCK \"VarFileInfo\" BEGIN VALUE \"Translation\", 0x409, 1200 END END ") set(${_out} ${_rc_file}) else() set(${_out}) endif() endmacro() # usage: deploy_target(