summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-05-03 15:42:37 (GMT)
committerKitware Robot <kwrobot@kitware.com>2019-05-03 15:42:47 (GMT)
commit323c4fb989e0259c733f5a34044c693667a31842 (patch)
tree45956917bbfdc1c8705fca4b7ab10bb10fea7d2e /Source
parent784dd90fd40ff3cdc9fb44d37c0eef992ed05a92 (diff)
parent6e5ccabe9ba1b92bb5244683c4315964b01e0df7 (diff)
downloadCMake-323c4fb989e0259c733f5a34044c693667a31842.zip
CMake-323c4fb989e0259c733f5a34044c693667a31842.tar.gz
CMake-323c4fb989e0259c733f5a34044c693667a31842.tar.bz2
Merge topic 'genex-TARGET_FILE_BASE_NAME-manage-postfix'
6e5ccabe9b Genex: Update $<TARGET_FILE_BASE_NAME:...>: take care of POSTFIX 1f4c9aa7d2 Refactor: introduce method cmGeneratorTarget::GetFilePostfix Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3267
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGeneratorExpressionNode.cxx9
-rw-r--r--Source/cmGeneratorTarget.cxx30
-rw-r--r--Source/cmGeneratorTarget.h3
3 files changed, 27 insertions, 15 deletions
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 06e02aa..8c6fb34 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -1961,7 +1961,8 @@ struct TargetOutputNameArtifactResultGetter<ArtifactNameTag>
const GeneratorExpressionContent* /*unused*/)
{
return target->GetOutputName(context->Config,
- cmStateEnums::RuntimeBinaryArtifact);
+ cmStateEnums::RuntimeBinaryArtifact) +
+ target->GetFilePostfix(context->Config);
}
};
@@ -1983,7 +1984,8 @@ struct TargetOutputNameArtifactResultGetter<ArtifactLinkerTag>
target->HasImportLibrary(context->Config)
? cmStateEnums::ImportLibraryArtifact
: cmStateEnums::RuntimeBinaryArtifact;
- return target->GetOutputName(context->Config, artifact);
+ return target->GetOutputName(context->Config, artifact) +
+ target->GetFilePostfix(context->Config);
}
};
@@ -2023,7 +2025,8 @@ struct TargetOutputNameArtifactResultGetter<ArtifactPdbTag>
return std::string();
}
- return target->GetPDBOutputName(context->Config);
+ return target->GetPDBOutputName(context->Config) +
+ target->GetFilePostfix(context->Config);
}
};
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 3fb95bf..036a07d 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -491,6 +491,22 @@ std::string cmGeneratorTarget::GetFileSuffix(
return suffix;
}
+std::string cmGeneratorTarget::GetFilePostfix(const std::string& config) const
+{
+ const char* postfix = nullptr;
+ if (!config.empty()) {
+ std::string configProp = cmSystemTools::UpperCase(config);
+ configProp += "_POSTFIX";
+ postfix = this->GetProperty(configProp);
+ // Mac application bundles and frameworks have no postfix.
+ if (!this->IsImported() && postfix &&
+ (this->IsAppBundleOnApple() || this->IsFrameworkOnApple())) {
+ postfix = nullptr;
+ }
+ }
+ return postfix ? postfix : std::string();
+}
+
const char* cmGeneratorTarget::GetFilePrefixInternal(
cmStateEnums::ArtifactType artifact, const std::string& language) const
{
@@ -3930,17 +3946,7 @@ void cmGeneratorTarget::GetFullNameInternal(
}
// Compute the full name for main target types.
- const char* configPostfix = nullptr;
- if (!config.empty()) {
- std::string configProp = cmSystemTools::UpperCase(config);
- configProp += "_POSTFIX";
- configPostfix = this->GetProperty(configProp);
- // Mac application bundles and frameworks have no postfix.
- if (configPostfix &&
- (this->IsAppBundleOnApple() || this->IsFrameworkOnApple())) {
- configPostfix = nullptr;
- }
- }
+ const std::string configPostfix = this->GetFilePostfix(config);
// frameworks have directory prefix but no suffix
std::string fw_prefix;
@@ -3965,7 +3971,7 @@ void cmGeneratorTarget::GetFullNameInternal(
outBase += this->GetOutputName(config, artifact);
// Append the per-configuration postfix.
- outBase += configPostfix ? configPostfix : "";
+ outBase += configPostfix;
// Name shared libraries with their version number on some platforms.
if (const char* soversion = this->GetProperty("SOVERSION")) {
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 81f5255..0e0ee6a 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -543,6 +543,9 @@ public:
cmStateEnums::ArtifactType artifact =
cmStateEnums::RuntimeBinaryArtifact) const;
+ /** Get target file postfix */
+ std::string GetFilePostfix(const std::string& config) const;
+
/** Clears cached meta data for local and external source files.
* The meta data will be recomputed on demand.
*/