1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
- #.rst:
- # CPackIFWConfigureFile
- # ---------------------
- #
- # The module defines :command:`configure_file` similar command to
- # configure file templates prepared in QtIFW/SDK/Creator style.
- #
- #
- # Commands
- # ^^^^^^^^
- #
- # The module defines the following commands:
- #
- # .. command:: cpack_ifw_configure_file
- #
- # Copy a file to another location and modify its contents.
- #
- # ::
- #
- # cpack_ifw_configure_file(<input> <output>)
- #
- # Copies an ``<input>`` file to an ``<output>`` file and substitutes variable
- # values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content.
- # Each variable reference will be replaced with the current value of the
- # variable, or the empty string if the variable is not defined.
- #
- # NOTE: This file used to himself packaging via CPack IFW generator and
- # should be compatible with minimal CMake version defined in
- # ../CMakeLists.txt file.
- if(NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED)
- set(CPackIFWConfigureFile_CMake_INCLUDED 1)
- macro(cpack_ifw_configure_file INPUT OUTPUT)
- file(READ "${INPUT}" _tmp)
- foreach(_tmp_regex "%{([^%}]+)}" "%([^%]+)%")
- string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
- while(_tmp_vars)
- foreach(_tmp_var ${_tmp_vars})
- string(REGEX REPLACE "${_tmp_regex}" "\\1"
- _tmp_var_name "${_tmp_var}")
- if(DEFINED ${_tmp_var_name})
- set(_tmp_var_value "${${_tmp_var_name}}")
- elseif(NOT "$ENV{${_tmp_var_name}}" STREQUAL "")
- set(_tmp_var_value "$ENV{${_tmp_var_name}}")
- else()
- set(_tmp_var_value "")
- endif()
- string(REPLACE "${_tmp_var}" "${_tmp_var_value}" _tmp "${_tmp}")
- endforeach()
- string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
- endwhile()
- endforeach()
- if(IS_ABSOLUTE "${OUTPUT}")
- file(WRITE "${OUTPUT}" "${_tmp}")
- else()
- file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}" "${_tmp}")
- endif()
- endmacro()
- endif() # NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED
|