1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

QtIFW: Improved packaging

Now cpack_ifw_configure_file command used to configure
template files of component's scripts.

Now for these template files we can use QtIFW predefined
variables (like @VAR@) and template variables
in Qt/IFW/SDK/Creator templates style (like %VAR%).

Now CMake_INSTALL_INFIX advanced variable used to configure
CMake installation destination when package as part of QtSDK.
This commit is contained in:
Konstantin Podsvirov
2017-01-11 14:06:00 +03:00
parent 728820f3ea
commit 4971799360
9 changed files with 65 additions and 77 deletions

View File

@@ -3,38 +3,29 @@
# CMake version
include("${CMAKE_CURRENT_LIST_DIR}/../../Source/CMakeVersion.cmake")
set(CM_VER_XY ${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR})
set(CM_VER_X_Y ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR})
set(CM_VER_X_Y_Z ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATH})
# Destiantion
set(CM_INST_PREF "Tools/CMake/${CM_VER_X_Y}")
set(CMAKE_BIN_DIR "${CM_INST_PREF}/bin"
CACHE STRING "Location under install bin")
set(CMAKE_DATA_DIR "${CM_INST_PREF}/share/cmake-${CM_VER_X_Y}"
CACHE STRING "Location under install data")
set(CMAKE_DOC_DIR "${CM_INST_PREF}/doc/cmake-${CM_VER_X_Y}"
CACHE STRING "Location under install docs")
set(CMAKE_MAN_DIR "${CM_INST_PREF}/man"
CACHE STRING "Location under install man pages")
set(CMAKE_XDGDATA_DIR "${CM_INST_PREF}/share"
CACHE STRING "Location under install XDG specific files")
# Install destinations
set(CMake_INSTALL_INFIX "Tools/CMake/${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}/"
CACHE STRING "Location under install CMake tools")
# Package
set(CMake_IFW_ROOT_COMPONENT_NAME
"qt.tools.cmake.${CM_VER_XY}"
"qt.tools.cmake.${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR}"
CACHE STRING "QtSDK CMake tools component name")
set(CMake_IFW_ROOT_COMPONENT_DISPLAY_NAME
"CMake ${CM_VER_X_Y}"
"CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}"
CACHE STRING "QtSDK CMake tools component display name")
set(CMake_IFW_ROOT_COMPONENT_DESCRIPTION
"CMake Build Tools ${CM_VER_X_Y_Z}"
"CMake Build Tools ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATH}"
CACHE STRING "QtSDK CMake tools component description")
set(CMake_IFW_ROOT_COMPONENT_SCRIPT
"${CMAKE_CURRENT_BINARY_DIR}/qt.tools.cmake.${CM_VER_XY}.qs"
CACHE STRING "QtSDK CMake tools component display name")
set(CMake_IFW_ROOT_COMPONENT_SCRIPT_TEMPLATE
"${CMAKE_CURRENT_LIST_DIR}/qt.tools.cmake.xx.qs.in"
CACHE FILEPATH "QtSDK CMake tools script template")
set(CMake_IFW_ROOT_COMPONENT_SCRIPT_GENERATED
"${CMAKE_CURRENT_BINARY_DIR}/qt.tools.cmake.${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR}.qs"
CACHE FILEPATH "QtSDK CMake tools script generated")
set(CMake_IFW_ROOT_COMPONENT_PRIORITY
"${CM_VER_XY}"
"${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR}"
CACHE STRING "QtSDK CMake tools component sorting priority")
set(CMake_IFW_ROOT_COMPONENT_DEFAULT ""
CACHE STRING "QtSDK CMake tools component default")
@@ -52,17 +43,3 @@ set(CPACK_IFW_DOWNLOAD_ALL "TRUE"
CACHE STRING "All QtSDK components is downloaded")
set(CPACK_DOWNLOAD_SITE "file:///${CMAKE_CURRENT_BINARY_DIR}/QtSDK/IFW/CMake/repository"
CACHE STRING "Local repository for testing")
# Script
set(SDKToolBinary "@SDKToolBinary@")
set(CM_VER_XY_DIR "@CMAKE${CM_VER_XY}_DIR@")
configure_file("${CMAKE_CURRENT_LIST_DIR}/qt.tools.cmake.xx.qs.in"
"${CMAKE_CURRENT_BINARY_DIR}/qt.tools.cmake.${CM_VER_XY}.qs"
@ONLY)
# Unset temporary variables
unset(CM_VER_XY)
unset(CM_VER_X_Y)
unset(CM_VER_X_Y_Z)
unset(CM_INST_PREF)
unset(SDKToolBinary)

View File

@@ -9,15 +9,15 @@
function Component()
{
installer.valueChanged.connect( this, Component.prototype.reactOnTargetDirChange );
// set the default values to CMAKE@CM_VER_XY@_DIR
// set the default values to CMAKE%CMake_VERSION_MAJOR%%CMake_VERSION_MINOR%_BIN_DIR
Component.prototype.reactOnTargetDirChange("TargetDir", installer.value("TargetDir"));
}
Component.prototype.reactOnTargetDirChange = function(key, value)
{
if (key == "TargetDir") {
var path = value + "/@CM_INST_PREF@";
installer.setValue("CMAKE@CM_VER_XY@_DIR", path.replace(/\\/g, "/"));
var path = value + "/%CMAKE_BIN_DIR%";
installer.setValue("CMAKE%CMake_VERSION_MAJOR%%CMake_VERSION_MINOR%_BIN_DIR", path.replace(/\\/g, "/"));
}
}
@@ -31,13 +31,13 @@ Component.prototype.createOperations = function()
return;
var cmId = component.name;
installer.setValue("CMAKE@CM_VER_XY@_ID", cmId);
installer.setValue("CMAKE%CMake_VERSION_MAJOR%%CMake_VERSION_MINOR%_ID", cmId);
component.addOperation("Execute",
["{0,2}", "@SDKToolBinary@", "addCMake",
"--id", cmId,
"--name", "@CMake_IFW_ROOT_COMPONENT_DISPLAY_NAME@",
"--path", "@CM_VER_XY_DIR@/bin/cmake.exe",
"--name", "%CMake_IFW_ROOT_COMPONENT_DISPLAY_NAME%",
"--path", "@CMAKE%CMake_VERSION_MAJOR%%CMake_VERSION_MINOR%_BIN_DIR@/cmake.exe",
"UNDOEXECUTE",
"@SDKToolBinary@", "rmCMake", "--id", cmId]);