CPackIFWConfigureFile¶
Added in version 3.8.
This module provides a command similar to configure_file()
for
configuring file templates prepared in QtIFW/SDK/Creator style.
Load this module in a CMake project with:
include(CPackIFWConfigureFile)
Commands¶
This module provides the following command:
- cpack_ifw_configure_file¶
Copies a file template to output file and substitutes variable values referenced as
%{VAR}
or%VAR%
from the input file template content:cpack_ifw_configure_file(<input> <output>)
<input>
Input file template. If given as a relative path, it is interpreted as relative to the current source directory (
CMAKE_CURRENT_SOURCE_DIR
).<output>
Output file. If given as a relative path, it is interpreted as relative to the current binary directory (
CMAKE_CURRENT_BINARY_DIR
).
Qt Installer Framework (QtIFW) uses
@
characters for embedding predefined variables (TargetDir
,StartMenuDir
, etc.) in Qt installer scripts:example.qs
¶component.addOperation( "CreateShortcut", "@TargetDir@/example.com.html", "@StartMenuDir@/Example Web Site.lnk" );
The purpose of this command is to preserve the QtIFW predefined variables containing the
@
characters (@VAR@
), and instead use the%
characters for template placeholders (%VAR%
,%{VAR}
) in Qt/IFW/SDK/Creator templates. Theconfigure_file()
command would otherwise replace all variable references containing the@
characters.Each variable reference will be replaced with the current value of the variable, or the empty string if the variable is not defined.
Examples¶
In the following example this module is used to create an IFW component
script from a given template file qt.tools.foo.qs.in
, where
%FOO_DOC_DIR%
variable reference will be replaced by the values of
the FOO_DOC_DIR
CMake variable.
CMakeLists.txt
¶cmake_minimum_required(VERSION 3.8)
project(Foo)
# ...
include(CPackIFWConfigureFile)
set(FOO_DOC_DIR "doc/foo")
cpack_ifw_configure_file(qt.tools.foo.qs.in qt.tools.foo.qs)
qt.tools.foo.qs.in
¶function Component()
{
}
Component.prototype.createOperations = function()
{
if (installer.value("os") === "win") {
component.addOperation(
"CreateShortcut",
"@TargetDir@/%FOO_DOC_DIR%/example.com.html",
"@StartMenuDir@/Example Web Site.lnk"
);
}
component.createOperations();
}
// ...
See Also¶
The
CPack IFW Generator
.The
CPackIFW
module.