summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2021-10-04 03:04:51 (GMT)
committerCraig Scott <craig.scott@crascit.com>2021-10-05 12:29:16 (GMT)
commit2a3116795528354b9e93238d057efa16b3635da8 (patch)
treeb664039635b2f9531f9a20080208436ac1a701e7
parenta31447417f65ac37c4a4966fc7314c40b3fca91b (diff)
downloadCMake-2a3116795528354b9e93238d057efa16b3635da8.zip
CMake-2a3116795528354b9e93238d057efa16b3635da8.tar.gz
CMake-2a3116795528354b9e93238d057efa16b3635da8.tar.bz2
AUTOUIC: Fix merging of --blah options not being detected for Qt6
When merging a new set of uic options with a base set of options, such as when a source file has a non-empty AUTOUIC_OPTIONS property, the test for whether to support options starting with two hyphens was only testing if the Qt major version was exactly 5 rather than at least 5. That had the effect of preventing such options from being merged correctly when using Qt6, so new and base options would both be present instead of the single merged option from the source file properties. Update the version check and rename function arguments to avoid misrepresenting what they mean. Note that uic accepts long option names with a single hyphen too. See Qt docs for QCommandLineParser::ParseAsLongOptions for confirmation.
-rw-r--r--Source/cmQtAutoGen.cxx13
-rw-r--r--Source/cmQtAutoGen.h4
-rw-r--r--Source/cmQtAutoMocUic.cxx2
3 files changed, 10 insertions, 9 deletions
diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx
index 57fcd2d..9584e5c 100644
--- a/Source/cmQtAutoGen.cxx
+++ b/Source/cmQtAutoGen.cxx
@@ -24,7 +24,8 @@
/// @arg valueOpts list of options that accept a value
void MergeOptions(std::vector<std::string>& baseOpts,
std::vector<std::string> const& newOpts,
- std::initializer_list<cm::string_view> valueOpts, bool isQt5)
+ std::initializer_list<cm::string_view> valueOpts,
+ bool isQt5OrLater)
{
if (newOpts.empty()) {
return;
@@ -47,7 +48,7 @@ void MergeOptions(std::vector<std::string>& baseOpts,
auto oit = newOpt.begin();
if (*oit == '-') {
++oit;
- if (isQt5 && (*oit == '-')) {
+ if (isQt5OrLater && (*oit == '-')) {
++oit;
}
optName.assign(oit, newOpt.end());
@@ -204,24 +205,24 @@ std::string cmQtAutoGen::AppendFilenameSuffix(cm::string_view filename,
void cmQtAutoGen::UicMergeOptions(std::vector<std::string>& baseOpts,
std::vector<std::string> const& newOpts,
- bool isQt5)
+ bool isQt5OrLater)
{
static std::initializer_list<cm::string_view> const valueOpts = {
"tr", "translate", "postfix", "generator",
"include", // Since Qt 5.3
"g"
};
- MergeOptions(baseOpts, newOpts, valueOpts, isQt5);
+ MergeOptions(baseOpts, newOpts, valueOpts, isQt5OrLater);
}
void cmQtAutoGen::RccMergeOptions(std::vector<std::string>& baseOpts,
std::vector<std::string> const& newOpts,
- bool isQt5)
+ bool isQt5OrLater)
{
static std::initializer_list<cm::string_view> const valueOpts = {
"name", "root", "compress", "threshold"
};
- MergeOptions(baseOpts, newOpts, valueOpts, isQt5);
+ MergeOptions(baseOpts, newOpts, valueOpts, isQt5OrLater);
}
static void RccListParseContent(std::string const& content,
diff --git a/Source/cmQtAutoGen.h b/Source/cmQtAutoGen.h
index 466a954..5a23ae9 100644
--- a/Source/cmQtAutoGen.h
+++ b/Source/cmQtAutoGen.h
@@ -93,12 +93,12 @@ public:
/// @brief Merges newOpts into baseOpts
static void UicMergeOptions(std::vector<std::string>& baseOpts,
std::vector<std::string> const& newOpts,
- bool isQt5);
+ bool isQt5OrLater);
/// @brief Merges newOpts into baseOpts
static void RccMergeOptions(std::vector<std::string>& baseOpts,
std::vector<std::string> const& newOpts,
- bool isQt5);
+ bool isQt5OrLater);
/** @class RccLister
* @brief Lists files in qrc resource files
diff --git a/Source/cmQtAutoMocUic.cxx b/Source/cmQtAutoMocUic.cxx
index 056056c..4ed728e 100644
--- a/Source/cmQtAutoMocUic.cxx
+++ b/Source/cmQtAutoMocUic.cxx
@@ -2083,7 +2083,7 @@ void cmQtAutoMocUicT::JobCompileUicT::Process()
auto optionIt = this->UicConst().UiFiles.find(sourceFile);
if (optionIt != this->UicConst().UiFiles.end()) {
UicMergeOptions(allOpts, optionIt->second.Options,
- (this->BaseConst().QtVersion.Major == 5));
+ (this->BaseConst().QtVersion.Major >= 5));
}
cm::append(cmd, allOpts);
}