cmAddCustom{Command,Target}Command: Skip conversions on genex paths

If an output or byproduct path starts in a generator expression, do not
convert it to a full path yet.  That will have to be done at generate
time after evaluating the generator expressions.

Also update the `add_custom_target` byproduct path conversion added by
commit 445ff5ccdf (Byproducts: collapse full paths of custom target
byproducts, 2019-09-11, v3.16.0-rc1~103^2~1) to match the behavior of
`add_custom_command` when a path starts in a generator expression.
This commit is contained in:
Brad King
2020-10-16 10:19:25 -04:00
parent c523d1cc32
commit b285748f79
2 changed files with 9 additions and 3 deletions

View File

@@ -10,6 +10,7 @@
#include "cmCustomCommandLines.h"
#include "cmCustomCommandTypes.h"
#include "cmExecutionStatus.h"
#include "cmGeneratorExpression.h"
#include "cmGlobalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -188,7 +189,8 @@ bool cmAddCustomCommandCommand(std::vector<std::string> const& args,
case doing_output:
case doing_outputs:
case doing_byproducts:
if (!cmSystemTools::FileIsFullPath(copy)) {
if (!cmSystemTools::FileIsFullPath(copy) &&
cmGeneratorExpression::Find(copy) != 0) {
// This is an output to be generated, so it should be
// under the build tree.
filename = cmStrCat(mf.GetCurrentBinaryDirectory(), '/');