93 lines
4.1 KiB
CMake
93 lines
4.1 KiB
CMake
#
|
|
# Copyright (C) 2015 Ford Motor Company
|
|
# Contact: https://www.qt.io/licensing/
|
|
#
|
|
# This file is part of the QtRemoteObjects module of the Qt Toolkit.
|
|
#
|
|
# $QT_BEGIN_LICENSE:LGPL$
|
|
# Commercial License Usage
|
|
# Licensees holding valid commercial Qt licenses may use this file in
|
|
# accordance with the commercial license agreement provided with the
|
|
# Software or, alternatively, in accordance with the terms contained in
|
|
# a written agreement between you and The Qt Company. For licensing terms
|
|
# and conditions see https://www.qt.io/terms-conditions. For further
|
|
# information use the contact form at https://www.qt.io/contact-us.
|
|
#
|
|
# GNU Lesser General Public License Usage
|
|
# Alternatively, this file may be used under the terms of the GNU Lesser
|
|
# General Public License version 3 as published by the Free Software
|
|
# Foundation and appearing in the file LICENSE.LGPL3 included in the
|
|
# packaging of this file. Please review the following information to
|
|
# ensure the GNU Lesser General Public License version 3 requirements
|
|
# will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
|
#
|
|
# GNU General Public License Usage
|
|
# Alternatively, this file may be used under the terms of the GNU
|
|
# General Public License version 2.0 or (at your option) the GNU General
|
|
# Public license version 3 or any later version approved by the KDE Free
|
|
# Qt Foundation. The licenses are as published by the Free Software
|
|
# Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
|
# included in the packaging of this file. Please review the following
|
|
# information to ensure the GNU General Public License requirements will
|
|
# be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
|
# https://www.gnu.org/licenses/gpl-3.0.html.
|
|
#
|
|
# $QT_END_LICENSE$
|
|
|
|
# Macros
|
|
# =========
|
|
#
|
|
# In some cases it can be necessary or useful to invoke the Qt build tools in a
|
|
# more-manual way. Several macros are available to add targets for such uses.
|
|
#
|
|
# ::
|
|
#
|
|
# macro qt5_generate_repc(outfiles infile outputtype)
|
|
# out: outfiles
|
|
# in: infile outputtype
|
|
# create C++ code from a list of .rep files. Per-directory preprocessor
|
|
# definitions are also added.
|
|
# infile should be a replicant template file (.rep)
|
|
# outputtype specifies output file type, it can be one of SOURCE|REPLICA
|
|
# Example usage: qt5_generate_repc(LIB_SRCS interface.rep SOURCE)
|
|
# for generating interface_source.h and adding it to LIB_SRCS
|
|
|
|
if(NOT Qt5RemoteObjects_REPC_EXECUTABLE)
|
|
message(FATAL_ERROR "repc executable not found -- Check installation.")
|
|
endif()
|
|
|
|
macro(qt5_generate_repc outfiles infile outputtype)
|
|
# get include dirs and flags
|
|
get_filename_component(abs_infile ${infile} ABSOLUTE)
|
|
get_filename_component(infile_name "${infile}" NAME)
|
|
string(REPLACE ".rep" "" _infile_base ${infile_name})
|
|
if(${outputtype} STREQUAL "SOURCE")
|
|
set(_outfile_base "rep_${_infile_base}_source")
|
|
set(_repc_args -o source)
|
|
else()
|
|
set(_outfile_base "rep_${_infile_base}_replica")
|
|
set(_repc_args -o replica)
|
|
endif()
|
|
set(_outfile_header "${CMAKE_CURRENT_BINARY_DIR}/${_outfile_base}.h")
|
|
add_custom_command(OUTPUT ${_outfile_header}
|
|
DEPENDS ${abs_infile}
|
|
COMMAND ${Qt5RemoteObjects_REPC_EXECUTABLE} ${abs_infile} ${_repc_args} ${_outfile_header}
|
|
VERBATIM)
|
|
set_source_files_properties(${_outfile_header} PROPERTIES GENERATED TRUE)
|
|
|
|
qt5_get_moc_flags(_moc_flags)
|
|
# Make sure we get the compiler flags from the Qt5::RemoteObjects target (for includes)
|
|
# (code adapted from QT5_GET_MOC_FLAGS)
|
|
foreach(_current ${Qt5RemoteObjects_INCLUDE_DIRS})
|
|
if("${_current}" MATCHES "\\.framework/?$")
|
|
string(REGEX REPLACE "/[^/]+\\.framework" "" framework_path "${_current}")
|
|
set(_moc_flags ${_moc_flags} "-F${framework_path}")
|
|
else()
|
|
set(_moc_flags ${_moc_flags} "-I${_current}")
|
|
endif()
|
|
endforeach()
|
|
|
|
set(_moc_outfile "${CMAKE_CURRENT_BINARY_DIR}/moc_${_outfile_base}.cpp")
|
|
qt5_create_moc_command(${_outfile_header} ${_moc_outfile} "${_moc_flags}" "" "" "")
|
|
list(APPEND ${outfiles} "${_outfile_header}" ${_moc_outfile})
|
|
endmacro()
|