2017-02-28 11:08:26 +00:00
|
|
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
2017-08-26 11:59:57 +00:00
|
|
|
#ifndef cmQtAutoGen_h
|
|
|
|
#define cmQtAutoGen_h
|
2017-02-28 11:08:26 +00:00
|
|
|
|
2017-08-25 18:39:02 +00:00
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
2017-04-11 19:42:35 +00:00
|
|
|
|
2017-02-28 11:08:26 +00:00
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
|
|
|
|
2017-08-26 11:59:57 +00:00
|
|
|
/** \class cmQtAutoGen
|
2018-01-03 15:59:40 +00:00
|
|
|
* \brief Common base class for QtAutoGen classes
|
2017-08-26 11:59:57 +00:00
|
|
|
*/
|
|
|
|
class cmQtAutoGen
|
2017-02-28 11:08:26 +00:00
|
|
|
{
|
|
|
|
public:
|
2018-01-03 15:59:40 +00:00
|
|
|
/// @brief Nested lists separator
|
|
|
|
static std::string const ListSep;
|
|
|
|
/// @brief Maximum number of parallel threads/processes in a generator
|
|
|
|
static unsigned int const ParallelMax;
|
2017-02-28 11:08:26 +00:00
|
|
|
|
2018-01-03 15:59:40 +00:00
|
|
|
/// @brief AutoGen generator type
|
|
|
|
enum class GeneratorT
|
2017-03-15 09:42:37 +00:00
|
|
|
{
|
2017-08-26 11:59:57 +00:00
|
|
|
GEN, // General
|
2017-03-15 09:42:37 +00:00
|
|
|
MOC,
|
|
|
|
UIC,
|
|
|
|
RCC
|
|
|
|
};
|
|
|
|
|
2018-08-13 10:06:19 +00:00
|
|
|
/// @brief Integer version
|
|
|
|
struct IntegerVersion
|
|
|
|
{
|
|
|
|
unsigned int Major = 0;
|
|
|
|
unsigned int Minor = 0;
|
|
|
|
|
|
|
|
IntegerVersion() = default;
|
|
|
|
IntegerVersion(unsigned int major, unsigned int minor)
|
|
|
|
: Major(major)
|
|
|
|
, Minor(minor)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
bool operator>(IntegerVersion const version)
|
|
|
|
{
|
|
|
|
return (this->Major > version.Major) ||
|
|
|
|
((this->Major == version.Major) && (this->Minor > version.Minor));
|
|
|
|
}
|
|
|
|
|
|
|
|
bool operator>=(IntegerVersion const version)
|
|
|
|
{
|
|
|
|
return (this->Major > version.Major) ||
|
|
|
|
((this->Major == version.Major) && (this->Minor >= version.Minor));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2017-02-28 11:08:26 +00:00
|
|
|
public:
|
2017-08-26 11:59:57 +00:00
|
|
|
/// @brief Returns the generator name
|
2018-01-03 15:59:40 +00:00
|
|
|
static std::string const& GeneratorName(GeneratorT genType);
|
2017-08-26 11:59:57 +00:00
|
|
|
/// @brief Returns the generator name in upper case
|
2018-01-03 15:59:40 +00:00
|
|
|
static std::string GeneratorNameUpper(GeneratorT genType);
|
2017-08-26 11:59:57 +00:00
|
|
|
|
2018-04-22 21:42:51 +00:00
|
|
|
/// @brief Returns the string escaped and enclosed in quotes
|
2017-09-12 08:08:10 +00:00
|
|
|
static std::string Quoted(std::string const& text);
|
|
|
|
|
2018-01-03 15:59:40 +00:00
|
|
|
static std::string QuotedCommand(std::vector<std::string> const& command);
|
|
|
|
|
|
|
|
/// @brief Returns the parent directory of the file with a "/" suffix
|
|
|
|
static std::string SubDirPrefix(std::string const& filename);
|
|
|
|
|
2017-09-12 08:08:10 +00:00
|
|
|
/// @brief Appends the suffix to the filename before the last dot
|
|
|
|
static std::string AppendFilenameSuffix(std::string const& filename,
|
|
|
|
std::string const& suffix);
|
2017-03-02 13:06:02 +00:00
|
|
|
|
2017-08-30 21:13:10 +00:00
|
|
|
/// @brief Merges newOpts into baseOpts
|
|
|
|
static void UicMergeOptions(std::vector<std::string>& baseOpts,
|
2017-09-12 08:08:10 +00:00
|
|
|
std::vector<std::string> const& newOpts,
|
2017-08-30 21:13:10 +00:00
|
|
|
bool isQt5);
|
|
|
|
|
|
|
|
/// @brief Merges newOpts into baseOpts
|
|
|
|
static void RccMergeOptions(std::vector<std::string>& baseOpts,
|
2017-09-12 08:08:10 +00:00
|
|
|
std::vector<std::string> const& newOpts,
|
2017-08-30 21:13:10 +00:00
|
|
|
bool isQt5);
|
|
|
|
|
2018-01-03 15:59:40 +00:00
|
|
|
/// @brief Parses the content of a qrc file
|
|
|
|
///
|
|
|
|
/// Use when rcc does not support the "--list" option
|
|
|
|
static void RccListParseContent(std::string const& content,
|
|
|
|
std::vector<std::string>& files);
|
|
|
|
|
|
|
|
/// @brief Parses the output of the "rcc --list ..." command
|
|
|
|
static bool RccListParseOutput(std::string const& rccStdOut,
|
|
|
|
std::string const& rccStdErr,
|
|
|
|
std::vector<std::string>& files,
|
|
|
|
std::string& error);
|
|
|
|
|
|
|
|
/// @brief Converts relative qrc entry paths to full paths
|
|
|
|
static void RccListConvertFullPath(std::string const& qrcFileDir,
|
|
|
|
std::vector<std::string>& files);
|
2017-02-28 11:08:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|