QtAutogen: Fix rcc rebuild with Ninja generator (#15459)
The rcc outputs are byproducts of the cmake_autogen rule, not outputs. We still must run cmake_autogen on every run even if the rcc outputs exist. Ninja requires explicit byproduct specification, which is now possible in CMake since commit v3.2.0-rc1~340^2~2 (Add an option for explicit BYPRODUCTS of custom commands, 2014-11-13). Revise the logic introduced by commit v3.2.0-rc1~480^2 (QtAutogen: Regenerate qrc files if their input changes, 2014-09-17) to specify byproducts explicitly.
This commit is contained in:
parent
7910cb7cfb
commit
4d08e6b6dd
|
@ -374,7 +374,9 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<std::string> rcc_output;
|
std::vector<std::string> rcc_output;
|
||||||
if(makefile->GetLocalGenerator()->GetGlobalGenerator()->GetName() == "Ninja"
|
bool const isNinja =
|
||||||
|
makefile->GetLocalGenerator()->GetGlobalGenerator()->GetName() == "Ninja";
|
||||||
|
if(isNinja
|
||||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
|| usePRE_BUILD
|
|| usePRE_BUILD
|
||||||
#endif
|
#endif
|
||||||
|
@ -444,7 +446,7 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
cmTarget* autogenTarget = 0;
|
cmTarget* autogenTarget = 0;
|
||||||
if (!rcc_output.empty())
|
if (!rcc_output.empty() && !isNinja)
|
||||||
{
|
{
|
||||||
std::vector<std::string> no_byproducts;
|
std::vector<std::string> no_byproducts;
|
||||||
makefile->AddCustomCommandToOutput(rcc_output, no_byproducts,
|
makefile->AddCustomCommandToOutput(rcc_output, no_byproducts,
|
||||||
|
@ -464,7 +466,8 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target)
|
||||||
{
|
{
|
||||||
autogenTarget = makefile->AddUtilityCommand(
|
autogenTarget = makefile->AddUtilityCommand(
|
||||||
autogenTargetName, true,
|
autogenTargetName, true,
|
||||||
workingDirectory.c_str(), depends,
|
workingDirectory.c_str(),
|
||||||
|
/*byproducts=*/rcc_output, depends,
|
||||||
commandLines, false, autogenComment.c_str());
|
commandLines, false, autogenComment.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue