summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-10-16 14:19:25 (GMT)
committerBrad King <brad.king@kitware.com>2020-12-10 12:06:20 (GMT)
commitb285748f79b642f3ab970912bc4512ded2f18124 (patch)
tree916eb57e2a76e26f5ffcc8aa071a1f78532e208b
parentc523d1cc32f53a176ea485aa33e076e577db2d17 (diff)
downloadCMake-b285748f79b642f3ab970912bc4512ded2f18124.zip
CMake-b285748f79b642f3ab970912bc4512ded2f18124.tar.gz
CMake-b285748f79b642f3ab970912bc4512ded2f18124.tar.bz2
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.
-rw-r--r--Source/cmAddCustomCommandCommand.cxx4
-rw-r--r--Source/cmAddCustomTargetCommand.cxx8
2 files changed, 9 insertions, 3 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx
index c1f98fa..8194226 100644
--- a/Source/cmAddCustomCommandCommand.cxx
+++ b/Source/cmAddCustomCommandCommand.cxx
@@ -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(), '/');
diff --git a/Source/cmAddCustomTargetCommand.cxx b/Source/cmAddCustomTargetCommand.cxx
index aa98d89..fd509bd 100644
--- a/Source/cmAddCustomTargetCommand.cxx
+++ b/Source/cmAddCustomTargetCommand.cxx
@@ -120,12 +120,16 @@ bool cmAddCustomTargetCommand(std::vector<std::string> const& args,
break;
case doing_byproducts: {
std::string filename;
- if (!cmSystemTools::FileIsFullPath(copy)) {
+ if (!cmSystemTools::FileIsFullPath(copy) &&
+ cmGeneratorExpression::Find(copy) != 0) {
filename = cmStrCat(mf.GetCurrentBinaryDirectory(), '/');
}
filename += copy;
cmSystemTools::ConvertToUnixSlashes(filename);
- byproducts.push_back(cmSystemTools::CollapseFullPath(filename));
+ if (cmSystemTools::FileIsFullPath(filename)) {
+ filename = cmSystemTools::CollapseFullPath(filename);
+ }
+ byproducts.push_back(filename);
} break;
case doing_depends: {
std::string dep = copy;