/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing
**
** This file is part of the Qt Build Suite.
**
** 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 http://www.qt.io/terms-conditions. For further information
** use the contact form at http://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 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file.  Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights.  These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
/*!
    \contentspage list-of-items.html
    \previouspage export-item.html
    \page filetagger-item.html
    \nextpage group-item.html
    \ingroup list-of-items

    \title FileTagger Item
    \brief Maps file patterns to tags.

    This item maps file patterns to tags. It can be attached to a product or a module.
    In the latter case, its effect is the same as if it had been attached to all products having
    a dependency on the respective module. For instance, the cpp module of \QBS has, among others,
    the following file tagger:
    \code
    FileTagger {
        patterns: "*.cpp"
        fileTags: ["cpp"]
    }
    \endcode

    As a result, the "cpp" tag is automatically attached to all files ending with ".cpp" in
    products depending on the cpp module. This causes them to be compiled, because a C++
    compiler rule has "cpp" in its list of matching input tags.

    File taggers are disabled if file tags are set explicitly in a product or group.
    For example, the "cpp" tag is not attached to the cpp files in the following product:

    \code
    Product {
        Depends { name: "cpp" }
        Group {
            files: "*.cpp"
            fileTags: "other"
        }
    }
    \endcode

    \section1 FileTagger Properties

    \table
    \header
        \li Property
        \li Type
        \li Default
        \li Description
    \row
        \li patterns
        \li stringList
        \li none
        \li The patterns to match against. Supports the usual wildcards '*', '?' and '[]'.
            Neither the list itself nor any of its elements may be empty.
    \row
        \li fileTags
        \li list
        \li empty list
        \li Tags to attach to a product's files. These can then be matched by a rule.
    \endtable
*/
