Browse Source

Refactor: introduce method cmGeneratorTarget::GetFilePostfix

Marc Chevrier 6 years ago
parent
commit
1f4c9aa7d2
2 changed files with 21 additions and 12 deletions
  1. 18 12
      Source/cmGeneratorTarget.cxx
  2. 3 0
      Source/cmGeneratorTarget.h

+ 18 - 12
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")) {

+ 3 - 0
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.
    */