diff --git a/doc/global/externalsites/external-resources.qdoc b/doc/global/externalsites/external-resources.qdoc index 01c6939dca..22c281bd87 100644 --- a/doc/global/externalsites/external-resources.qdoc +++ b/doc/global/externalsites/external-resources.qdoc @@ -71,6 +71,11 @@ \title CMake AUTOMOC Documentation */ +/*! + \externalpage https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html#autorcc + \title CMake AUTORCC Documentation +*/ + /*! \externalpage https://cmake.org/cmake/help/latest/prop_tgt/LOCATION.html \title CMake LOCATION Documentation diff --git a/src/corelib/doc/snippets/cmake-macros/examples.cmake b/src/corelib/doc/snippets/cmake-macros/examples.cmake new file mode 100644 index 0000000000..bba082586f --- /dev/null +++ b/src/corelib/doc/snippets/cmake-macros/examples.cmake @@ -0,0 +1,26 @@ +#! [qt5_wrap_cpp] +set(SOURCES myapp.cpp main.cpp) +qt5_wrap_cpp(SOURCES myapp.h) +add_executable(myapp ${SOURCES}) +#! [qt5_wrap_cpp] + +#! [qt5_add_resources] +set(SOURCES main.cpp) +qt5_add_resources(SOURCES example.qrc) +add_executable(myapp ${SOURCES}) +#! [qt5_add_resources] + +#! [qt5_add_big_resources] +set(SOURCES main.cpp) +qt5_add_big_resources(SOURCES big_resource.qrc) +add_executable(myapp ${SOURCES}) +#! [qt5_add_big_resources] + +#! [qt5_add_binary_resources] +qt5_add_binary_resources(resources project.qrc OPTIONS -no-compress) +add_dependencies(myapp resources) +#! [qt5_add_binary_resources] + +#! [qt5_generate_moc] +qt5_generate_moc(main.cpp main.moc TARGET myapp) +#! [qt5_generate_moc] diff --git a/src/corelib/doc/src/cmake-macros.qdoc b/src/corelib/doc/src/cmake-macros.qdoc new file mode 100644 index 0000000000..6140e8be44 --- /dev/null +++ b/src/corelib/doc/src/cmake-macros.qdoc @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** 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 Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\page qtcore-cmake-qt5-wrap-cpp.html +\ingroup cmake-macros-qtcore + +\title qt5_wrap_cpp + +\brief Creates \c{.moc} files from sources. + +\section1 Synopsis + +\badcode +qt5_wrap_cpp( src_file1 [src_file2 ...] + [TARGET target] + [OPTIONS ...] + [DEPENDS ...]) +\endcode + +\section1 Description + +Creates rules for calling \l{moc}{Meta-Object Compiler (moc)} on the given +source files. For each input file, an output file is generated in the build +directory. The paths of the generated files are added to\c{}. + +\note This is a low-level macro. See the \l{CMake AUTOMOC Documentation} for a +more convenient way to let source files be processed with \c{moc}. + +\section1 Options + +You can set an explicit \c{TARGET}. This will make sure that the target +properties \c{INCLUDE_DIRECTORIES} and \c{COMPILE_DEFINITIONS} are also used +when scanning the source files with \c{moc}. + +You can set additional \c{OPTIONS} that should be added to the \c{moc} calls. +You can find possible options in the \l{moc}{moc documentation}. + +\c{DEPENDS} allows you to add additional dependencies for recreation of the +generated files. This is useful when the sources have implicit dependencies, +like code for a Qt plugin that includes a \c{.json} file using the +Q_PLUGIN_METADATA() macro. + +\section1 Examples + +\snippet cmake-macros/examples.cmake qt5_wrap_cpp +*/ + +/*! +\page qtcore-cmake-qt5-add-resources.html +\ingroup cmake-macros-qtcore + +\title qt5_add_resources + +\brief Compiles binary resources into source code. + +\section1 Synopsis + +\badcode +qt5_add_resources( file1.qrc [file2.qrc ...] + [OPTIONS ...]) +\endcode + +\section1 Description + +Creates source code from Qt resource files using the +\l{Resource Compiler (rcc)}. Paths to the generated source files are added to +\c{}. + +\note This is a low-level macro. See the \l{CMake AUTORCC Documentation} for a +more convenient way to let Qt resource files be processed with \c{rcc}. +For embedding bigger resources, see \l qt5_add_big_resources. + +\section1 Arguments + +You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls. +You can find possible options in the \l{rcc}{rcc documentation}. + +\section1 Examples + +\snippet cmake-macros/examples.cmake qt5_add_resources +*/ + +/*! +\page qtcore-cmake-qt5-add-big-resources.html +\ingroup cmake-macros-qtcore + +\title qt5_add_big_resources + +\brief Compiles big binary resources into object code. + +\section1 Synopsis + +\badcode +qt5_add_big_resources( file1.qrc [file2.qrc ...] + [OPTIONS ...]) +\endcode + +\section1 Description + +Creates compiled object files from Qt resource files using the +\l{Resource Compiler (rcc)}. Paths to the generated files are added to +\c{}. + +This is similar to \l qt5_add_resources, but directly generates object +files (\c .o, \c .obj) files instead of C++ source code. This allows to +embed bigger resources, where compiling to C++ sources and then to +binaries would be too time consuming or memory intensive. + +\section1 Arguments + +You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls. +You can find possible options in the \l{rcc}{rcc documentation}. + +\section1 Examples + +\snippet cmake-macros/examples.cmake qt5_add_big_resources +*/ + +/*! +\page qtcore-cmake-qt5_add_binary_resources.html +\ingroup cmake-macros-qtcore + +\title qt5_add_binary_resources + +\brief Creates an \c{RCC} file from a list of Qt resource files. + +\section1 Synopsis + +\badcode +qt5_add_binary_resources(target file1.qrc [file2.qrc ...] + [DESTINATION ...] + [OPTIONS ...]) +\endcode + +\section1 Description + +Adds a custom \c target that compiles Qt resource files into a binary \c{.rcc} +file. + +\section1 Arguments + +\c{DESTINATION} sets the path of the generated \c{.rcc} file. The default is +\c{${CMAKE_CURRENT_BINARY_DIR}/${target}.rcc}. + +You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls. +You can find possible options in the \l{rcc}{rcc documentation}. + +\section1 Examples + +\snippet cmake-macros/examples.cmake qt5_add_binary_resources +*/ + +/*! +\page qtcore-cmake-qt5-generate-moc.html +\ingroup cmake-macros-qtcore + +\title qt5_generate_moc + +\brief Calls moc on an input file. + +\section1 Synopsis + +\badcode +qt5_generate_moc(src_file dest_file + [TARGET target]) +\endcode + +\section1 Description + +Creates a rule to call the \l{moc}{Meta-Object Compiler (moc)} on \c src_file +and store the output in \c dest_file. + +\note This is a low-level macro. See the \l{CMake AUTOMOC Documentation} for a +more convenient way to let source files be processed with \c{moc}. +\l qt5_wrap_cpp is also similar, but automatically generates a temporary file +path for you. + +\section1 Arguments + +You can set an explicit \c{TARGET}. This will make sure that the target +properties \c{INCLUDE_DIRECTORIES} and \c{COMPILE_DEFINITIONS} are also used +when scanning the source files with \c{moc}. + +\section1 Examples + +\snippet cmake-macros/examples.cmake qt5_generate_moc +*/