Browse Source

Merge topic 'clang-tidy-xcode-generator'

09b7ac7f67 strings: use single characters where possible
6aa9023700 string_view: use string_view literals in comparisons
1b60137b98 strings: combine string literals
e1b70d7286 cmCPackDragNDropGenerator: use a string instead of a stream for commands
f5d04b5bf0 cmStrCat: use where possible in Apple-specific sources
3af822cd8f cmXCode21Object: simplify streaming expression
c4f751604b cmLocalXCodeGenerator: return a default string
ce549909fb cmCPackPKGGenerator: remove unnecessary `.c_str()` calls
...

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Merge-request: !8660
Brad King 2 years ago
parent
commit
08c637423c

+ 27 - 29
Source/CPack/cmCPackBundleGenerator.cxx

@@ -86,24 +86,28 @@ int cmCPackBundleGenerator::ConstructBundle()
   std::string const staging = toplevel;
 
   std::ostringstream contents;
-  contents << staging << "/" << cpack_bundle_name << ".app/"
-           << "Contents";
+  contents << staging << "/" << cpack_bundle_name
+           << ".app/"
+              "Contents";
 
   std::ostringstream application;
-  application << contents.str() << "/"
-              << "MacOS";
+  application << contents.str()
+              << "/"
+                 "MacOS";
 
   std::ostringstream resources;
-  resources << contents.str() << "/"
-            << "Resources";
+  resources << contents.str()
+            << "/"
+               "Resources";
 
   // Install a required, user-provided bundle metadata file ...
   std::ostringstream plist_source;
   plist_source << cpack_bundle_plist;
 
   std::ostringstream plist_target;
-  plist_target << contents.str() << "/"
-               << "Info.plist";
+  plist_target << contents.str()
+               << "/"
+                  "Info.plist";
 
   if (!this->CopyFile(plist_source, plist_target)) {
     cmCPackLogger(
@@ -196,15 +200,11 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
 
     // sign the files supplied by the user, ie. frameworks.
     for (auto const& file : relFiles) {
-      std::ostringstream temp_sign_file_cmd;
-      temp_sign_file_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
-      temp_sign_file_cmd << " " << sign_parameter << " -s \""
-                         << cpack_apple_cert_app;
-      temp_sign_file_cmd << "\" -i ";
-      temp_sign_file_cmd << this->GetOption("CPACK_APPLE_BUNDLE_ID");
-      temp_sign_file_cmd << " \"";
-      temp_sign_file_cmd << bundle_path;
-      temp_sign_file_cmd << file << "\"";
+      auto temp_sign_file_cmd =
+        cmStrCat(this->GetOption("CPACK_COMMAND_CODESIGN"), ' ',
+                 sign_parameter, " -s \"", cpack_apple_cert_app, "\" -i ",
+                 this->GetOption("CPACK_APPLE_BUNDLE_ID"), " \"", bundle_path,
+                 file, '"');
 
       if (!this->RunCommand(temp_sign_file_cmd, &output)) {
         cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -216,11 +216,9 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
     }
 
     // sign main binary
-    std::ostringstream temp_sign_binary_cmd;
-    temp_sign_binary_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
-    temp_sign_binary_cmd << " " << sign_parameter << " -s \""
-                         << cpack_apple_cert_app;
-    temp_sign_binary_cmd << "\" \"" << bundle_path << "\"";
+    auto temp_sign_binary_cmd =
+      cmStrCat(this->GetOption("CPACK_COMMAND_CODESIGN"), ' ', sign_parameter,
+               " -s \"", cpack_apple_cert_app, "\" \"", bundle_path, '"');
 
     if (!this->RunCommand(temp_sign_binary_cmd, &output)) {
       cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -232,15 +230,15 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
     }
 
     // sign app bundle
-    std::ostringstream temp_codesign_cmd;
-    temp_codesign_cmd << this->GetOption("CPACK_COMMAND_CODESIGN");
-    temp_codesign_cmd << " " << sign_parameter << " -s \""
-                      << cpack_apple_cert_app << "\"";
+    auto temp_codesign_cmd =
+      cmStrCat(this->GetOption("CPACK_COMMAND_CODESIGN"), ' ', sign_parameter,
+               " -s \"", cpack_apple_cert_app, "\"");
     if (this->GetOption("CPACK_BUNDLE_APPLE_ENTITLEMENTS")) {
-      temp_codesign_cmd << " --entitlements ";
-      temp_codesign_cmd << this->GetOption("CPACK_BUNDLE_APPLE_ENTITLEMENTS");
+      temp_codesign_cmd +=
+        cmStrCat(" --entitlements ",
+                 this->GetOption("CPACK_BUNDLE_APPLE_ENTITLEMENTS"));
     }
-    temp_codesign_cmd << " \"" << bundle_path << "\"";
+    temp_codesign_cmd += cmStrCat(" \"", bundle_path, '"');
 
     if (!this->RunCommand(temp_codesign_cmd, &output)) {
       cmCPackLogger(cmCPackLog::LOG_ERROR,

+ 79 - 61
Source/CPack/cmCPackDragNDropGenerator.cxx

@@ -7,6 +7,9 @@
 #include <iomanip>
 #include <map>
 
+#include <cm/string_view>
+#include <cmext/string_view>
+
 #include <CoreFoundation/CoreFoundation.h>
 #include <cm3p/kwiml/abi.h>
 
@@ -136,8 +139,10 @@ int cmCPackDragNDropGenerator::InitializeInternal()
       return 0;
     }
     for (auto const& language : languages) {
-      std::string license = slaDirectory + "/" + language + ".license.txt";
-      std::string license_rtf = slaDirectory + "/" + language + ".license.rtf";
+      std::string license =
+        cmStrCat(slaDirectory, '/', language, ".license.txt");
+      std::string license_rtf =
+        cmStrCat(slaDirectory, '/', language, ".license.rtf");
       if (!singleLicense) {
         if (!cmSystemTools::FileExists(license) &&
             !cmSystemTools::FileExists(license_rtf)) {
@@ -148,7 +153,7 @@ int cmCPackDragNDropGenerator::InitializeInternal()
           return 0;
         }
       }
-      std::string menu = slaDirectory + "/" + language + ".menu.txt";
+      std::string menu = cmStrCat(slaDirectory, '/', language, ".menu.txt");
       if (!cmSystemTools::FileExists(menu)) {
         cmCPackLogger(cmCPackLog::LOG_ERROR,
                       "Missing menu file " << language << ".menu.txt"
@@ -192,13 +197,13 @@ int cmCPackDragNDropGenerator::PackageFiles()
   // loop to create dmg files
   packageFileNames.clear();
   for (auto const& package_file : package_files) {
-    std::string full_package_name = std::string(toplevel) + std::string("/");
-    if (package_file == "ALL_IN_ONE") {
+    std::string full_package_name = cmStrCat(toplevel, '/');
+    if (package_file == "ALL_IN_ONE"_s) {
       full_package_name += this->GetOption("CPACK_PACKAGE_FILE_NAME");
     } else {
       full_package_name += package_file;
     }
-    full_package_name += std::string(GetOutputExtension());
+    full_package_name += GetOutputExtension();
     packageFileNames.push_back(full_package_name);
 
     std::string src_dir = cmStrCat(toplevel, '/', package_file);
@@ -241,18 +246,18 @@ bool cmCPackDragNDropGenerator::CreateEmptyFile(std::ostringstream& target,
   return true;
 }
 
-bool cmCPackDragNDropGenerator::RunCommand(std::ostringstream& command,
+bool cmCPackDragNDropGenerator::RunCommand(std::string const& command,
                                            std::string* output)
 {
   int exit_code = 1;
 
   bool result = cmSystemTools::RunSingleCommand(
-    command.str(), output, output, &exit_code, nullptr, this->GeneratorVerbose,
+    command, output, output, &exit_code, nullptr, this->GeneratorVerbose,
     cmDuration::zero());
 
   if (!result || exit_code) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "Error executing: " << command.str() << std::endl);
+                  "Error executing: " << command << std::endl);
 
     return false;
   }
@@ -410,15 +415,21 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), "/temp.dmg");
 
   std::string create_error;
-  std::ostringstream temp_image_command;
-  temp_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
-  temp_image_command << " create";
-  temp_image_command << " -ov";
-  temp_image_command << " -srcfolder \"" << staging.str() << "\"";
-  temp_image_command << " -volname \"" << cpack_dmg_volume_name << "\"";
-  temp_image_command << " -fs \"" << cpack_dmg_filesystem << "\"";
-  temp_image_command << " -format " << temp_image_format;
-  temp_image_command << " \"" << temp_image << "\"";
+  auto temp_image_command =
+    cmStrCat(this->GetOption("CPACK_COMMAND_HDIUTIL"),
+             " create"
+             " -ov"
+             " -srcfolder \"",
+             staging.str(),
+             "\""
+             " -volname \"",
+             cpack_dmg_volume_name,
+             "\""
+             " -fs \"",
+             cpack_dmg_filesystem,
+             "\""
+             " -format ",
+             temp_image_format, " \"", temp_image, '"');
 
   if (!this->RunCommand(temp_image_command, &create_error)) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -434,10 +445,10 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     // before we exit.
     bool had_error = false;
 
-    std::ostringstream attach_command;
-    attach_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
-    attach_command << " attach";
-    attach_command << " \"" << temp_image << "\"";
+    auto attach_command = cmStrCat(this->GetOption("CPACK_COMMAND_HDIUTIL"),
+                                   " attach"
+                                   " \"",
+                                   temp_image, '"');
 
     std::string attach_output;
     if (!this->RunCommand(attach_command, &attach_output)) {
@@ -466,10 +477,10 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     // Optionally set the custom icon flag for the image ...
     if (!had_error && !cpack_package_icon->empty()) {
       std::string error;
-      std::ostringstream setfile_command;
-      setfile_command << this->GetOption("CPACK_COMMAND_SETFILE");
-      setfile_command << " -a C";
-      setfile_command << " \"" << temp_mount << "\"";
+      auto setfile_command = cmStrCat(this->GetOption("CPACK_COMMAND_SETFILE"),
+                                      " -a C"
+                                      " \"",
+                                      temp_mount, '"');
 
       if (!this->RunCommand(setfile_command, &error)) {
         cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -484,10 +495,12 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     // Optionally we can execute a custom apple script to generate
     // the .DS_Store for the volume folder ...
     if (!had_error && !cpack_dmg_ds_store_setup_script->empty()) {
-      std::ostringstream setup_script_command;
-      setup_script_command << "osascript"
-                           << " \"" << cpack_dmg_ds_store_setup_script << "\""
-                           << " \"" << temp_mount_name << "\"";
+      auto setup_script_command = cmStrCat("osascript"
+                                           " \"",
+                                           cpack_dmg_ds_store_setup_script,
+                                           "\""
+                                           " \"",
+                                           temp_mount_name, '"');
       std::string error;
       if (!this->RunCommand(setup_script_command, &error)) {
         cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -499,10 +512,10 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
       }
     }
 
-    std::ostringstream detach_command;
-    detach_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
-    detach_command << " detach";
-    detach_command << " \"" << temp_mount << "\"";
+    auto detach_command = cmStrCat(this->GetOption("CPACK_COMMAND_HDIUTIL"),
+                                   " detach"
+                                   " \"",
+                                   temp_mount, '\"');
 
     if (!this->RunCommand(detach_command)) {
       cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -517,14 +530,15 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
   }
 
   // Create the final compressed read-only disk image ...
-  std::ostringstream final_image_command;
-  final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
-  final_image_command << " convert \"" << temp_image << "\"";
-  final_image_command << " -format ";
-  final_image_command << cpack_dmg_format;
-  final_image_command << " -imagekey";
-  final_image_command << " zlib-level=9";
-  final_image_command << " -o \"" << output_file << "\"";
+  auto final_image_command = cmStrCat(this->GetOption("CPACK_COMMAND_HDIUTIL"),
+                                      " convert \"", temp_image,
+                                      "\""
+                                      " -format ",
+                                      cpack_dmg_format,
+                                      " -imagekey"
+                                      " zlib-level=9"
+                                      " -o \"",
+                                      output_file, '"');
 
   std::string convert_error;
 
@@ -574,16 +588,18 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
 
       header_data.push_back(0);
       header_data.push_back(languages.size());
+      // NOLINTNEXTLINE(modernize-loop-convert): `HAVE_CoreServices` needs `i`
       for (cmList::size_type i = 0; i < languages.size(); ++i) {
+        auto const& language = languages[i];
         CFStringRef language_cfstring = CFStringCreateWithCString(
-          nullptr, languages[i].c_str(), kCFStringEncodingUTF8);
+          nullptr, language.c_str(), kCFStringEncodingUTF8);
         CFStringRef iso_language =
           CFLocaleCreateCanonicalLanguageIdentifierFromString(
             nullptr, language_cfstring);
         if (!iso_language) {
           cmCPackLogger(cmCPackLog::LOG_ERROR,
-                        languages[i] << " is not a recognized language"
-                                     << std::endl);
+                        language << " is not a recognized language"
+                                 << std::endl);
         }
         char iso_language_cstr[65];
         CFStringGetCString(iso_language, iso_language_cstr,
@@ -663,13 +679,15 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     this->WriteRezXML(sla_xml, rez);
 
     // Create the final compressed read-only disk image ...
-    std::ostringstream embed_sla_command;
-    embed_sla_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
-    embed_sla_command << " udifrez";
-    embed_sla_command << " -xml";
-    embed_sla_command << " \"" << sla_xml << "\"";
-    embed_sla_command << " FIXME_WHY_IS_THIS_ARGUMENT_NEEDED";
-    embed_sla_command << " \"" << output_file << "\"";
+    auto embed_sla_command = cmStrCat(this->GetOption("CPACK_COMMAND_HDIUTIL"),
+                                      " udifrez"
+                                      " -xml"
+                                      " \"",
+                                      sla_xml,
+                                      "\""
+                                      " FIXME_WHY_IS_THIS_ARGUMENT_NEEDED"
+                                      " \"",
+                                      output_file, '"');
     std::string embed_error;
     if (!this->RunCommand(embed_sla_command, &embed_error)) {
       cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -709,8 +727,8 @@ std::string cmCPackDragNDropGenerator::GetComponentInstallDirNameSuffix(
   if (this->componentPackageMethod == ONE_PACKAGE_PER_GROUP) {
     // We have to find the name of the COMPONENT GROUP
     // the current COMPONENT belongs to.
-    std::string groupVar =
-      "CPACK_COMPONENT_" + cmSystemTools::UpperCase(componentName) + "_GROUP";
+    std::string groupVar = cmStrCat(
+      "CPACK_COMPONENT_", cmSystemTools::UpperCase(componentName), "_GROUP");
     cmValue _groupName = this->GetOption(groupVar);
     if (_groupName) {
       std::string groupName = _groupName;
@@ -721,8 +739,8 @@ std::string cmCPackDragNDropGenerator::GetComponentInstallDirNameSuffix(
     }
   }
 
-  std::string componentFileName =
-    "CPACK_DMG_" + cmSystemTools::UpperCase(componentName) + "_FILE_NAME";
+  std::string componentFileName = cmStrCat(
+    "CPACK_DMG_", cmSystemTools::UpperCase(componentName), "_FILE_NAME");
   if (this->IsSet(componentFileName)) {
     return this->GetOption(componentFileName);
   }
@@ -806,12 +824,12 @@ bool cmCPackDragNDropGenerator::WriteLicense(RezDoc& rez, size_t licenseNumber,
     actual_license = licenseFile;
   } else {
     std::string license_wo_ext =
-      slaDirectory + "/" + licenseLanguage + ".license";
-    if (cmSystemTools::FileExists(license_wo_ext + ".txt")) {
-      actual_license = license_wo_ext + ".txt";
+      cmStrCat(slaDirectory, '/', licenseLanguage, ".license");
+    if (cmSystemTools::FileExists(cmStrCat(license_wo_ext, ".txt"))) {
+      actual_license = cmStrCat(license_wo_ext, ".txt");
     } else {
       licenseArray = &rez.RTF;
-      actual_license = license_wo_ext + ".rtf";
+      actual_license = cmStrCat(license_wo_ext, ".rtf");
     }
   }
 
@@ -834,7 +852,7 @@ bool cmCPackDragNDropGenerator::WriteLicense(RezDoc& rez, size_t licenseNumber,
     } else {
       std::vector<std::string> lines;
       std::string actual_menu =
-        slaDirectory + "/" + licenseLanguage + ".menu.txt";
+        cmStrCat(slaDirectory, '/', licenseLanguage, ".menu.txt");
       if (!this->ReadFile(actual_menu, lines, error)) {
         return false;
       }

+ 1 - 1
Source/CPack/cmCPackDragNDropGenerator.h

@@ -33,7 +33,7 @@ protected:
 
   bool CopyFile(std::ostringstream& source, std::ostringstream& target);
   bool CreateEmptyFile(std::ostringstream& target, size_t size);
-  bool RunCommand(std::ostringstream& command, std::string* output = nullptr);
+  bool RunCommand(std::string const& command, std::string* output = nullptr);
 
   std::string GetComponentInstallDirNameSuffix(
     const std::string& componentName) override;

+ 23 - 20
Source/CPack/cmCPackPKGGenerator.cxx

@@ -4,6 +4,8 @@
 
 #include <vector>
 
+#include <cmext/string_view>
+
 #include "cmCPackComponentGroup.h"
 #include "cmCPackGenerator.h"
 #include "cmCPackLog.h"
@@ -38,13 +40,12 @@ std::string cmCPackPKGGenerator::GetPackageName(
   if (component.ArchiveFile.empty()) {
     std::string packagesDir =
       cmStrCat(this->GetOption("CPACK_TEMPORARY_DIRECTORY"), ".dummy");
-    std::ostringstream out;
-    out << cmSystemTools::GetFilenameWithoutLastExtension(packagesDir) << "-"
-        << component.Name << ".pkg";
-    return out.str();
+    return cmStrCat(
+      cmSystemTools::GetFilenameWithoutLastExtension(packagesDir), '-',
+      component.Name, ".pkg");
   }
 
-  return component.ArchiveFile + ".pkg";
+  return cmStrCat(component.ArchiveFile, ".pkg");
 }
 
 void cmCPackPKGGenerator::CreateBackground(const char* themeName,
@@ -160,14 +161,15 @@ void cmCPackPKGGenerator::WriteDistributionFile(const char* metapackageFile,
   for (auto const& comp : this->Components) {
     if (!comp.second.Group) {
       xChoiceOut.StartElement("line");
-      xChoiceOut.Attribute("choice", comp.first + "Choice");
+      xChoiceOut.Attribute("choice", cmStrCat(comp.first, "Choice"));
       xChoiceOut.Content(""); // Avoid self-closing tag.
       xChoiceOut.EndElement();
     }
   }
   if (!this->PostFlightComponent.Name.empty()) {
     xChoiceOut.StartElement("line");
-    xChoiceOut.Attribute("choice", PostFlightComponent.Name + "Choice");
+    xChoiceOut.Attribute("choice",
+                         cmStrCat(PostFlightComponent.Name, "Choice"));
     xChoiceOut.Content(""); // Avoid self-closing tag.
     xChoiceOut.EndElement();
   }
@@ -207,14 +209,14 @@ void cmCPackPKGGenerator::CreateChoiceOutline(
   const cmCPackComponentGroup& group, cmXMLWriter& xout)
 {
   xout.StartElement("line");
-  xout.Attribute("choice", group.Name + "Choice");
+  xout.Attribute("choice", cmStrCat(group.Name, "Choice"));
   for (cmCPackComponentGroup* subgroup : group.Subgroups) {
     CreateChoiceOutline(*subgroup, xout);
   }
 
   for (cmCPackComponent* comp : group.Components) {
     xout.StartElement("line");
-    xout.Attribute("choice", comp->Name + "Choice");
+    xout.Attribute("choice", cmStrCat(comp->Name, "Choice"));
     xout.Content(""); // Avoid self-closing tag.
     xout.EndElement();
   }
@@ -225,7 +227,7 @@ void cmCPackPKGGenerator::CreateChoice(const cmCPackComponentGroup& group,
                                        cmXMLWriter& xout)
 {
   xout.StartElement("choice");
-  xout.Attribute("id", group.Name + "Choice");
+  xout.Attribute("id", cmStrCat(group.Name, "Choice"));
   xout.Attribute("title", group.DisplayName);
   xout.Attribute("start_selected", "true");
   xout.Attribute("start_enabled", "true");
@@ -249,7 +251,7 @@ void cmCPackPKGGenerator::CreateChoice(const cmCPackComponent& component,
   }
 
   xout.StartElement("choice");
-  xout.Attribute("id", component.Name + "Choice");
+  xout.Attribute("id", cmStrCat(component.Name, "Choice"));
   xout.Attribute("title", component.DisplayName);
   xout.Attribute(
     "start_selected",
@@ -381,15 +383,14 @@ bool cmCPackPKGGenerator::CopyCreateResourceFile(const std::string& name,
                                                  const std::string& dirName)
 {
   std::string uname = cmSystemTools::UpperCase(name);
-  std::string cpackVar = "CPACK_RESOURCE_FILE_" + uname;
+  std::string cpackVar = cmStrCat("CPACK_RESOURCE_FILE_", uname);
   cmValue inFileName = this->GetOption(cpackVar);
   if (!inFileName) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
-                  "CPack option: " << cpackVar.c_str()
-                                   << " not specified. It should point to "
-                                   << (!name.empty() ? name : "<empty>")
-                                   << ".rtf, " << name << ".html, or " << name
-                                   << ".txt file" << std::endl);
+                  "CPack option: "
+                    << cpackVar << " not specified. It should point to "
+                    << (!name.empty() ? name : "<empty>") << ".rtf, " << name
+                    << ".html, or " << name << ".txt file" << std::endl);
     return false;
   }
   if (!cmSystemTools::FileExists(inFileName)) {
@@ -400,7 +401,8 @@ bool cmCPackPKGGenerator::CopyCreateResourceFile(const std::string& name,
     return false;
   }
   std::string ext = cmSystemTools::GetFilenameLastExtension(inFileName);
-  if (ext != ".rtfd" && ext != ".rtf" && ext != ".html" && ext != ".txt") {
+  if (ext != ".rtfd"_s && ext != ".rtf"_s && ext != ".html"_s &&
+      ext != ".txt"_s) {
     cmCPackLogger(
       cmCPackLog::LOG_ERROR,
       "Bad file extension specified: "
@@ -414,7 +416,8 @@ bool cmCPackPKGGenerator::CopyCreateResourceFile(const std::string& name,
 
   // Set this so that distribution.dist gets the right name (without
   // the path).
-  this->SetOption("CPACK_RESOURCE_FILE_" + uname + "_NOPATH", (name + ext));
+  this->SetOption(cmStrCat("CPACK_RESOURCE_FILE_", uname, "_NOPATH"),
+                  cmStrCat(name, ext));
 
   cmCPackLogger(cmCPackLog::LOG_VERBOSE,
                 "Configure file: " << (inFileName ? *inFileName : "(NULL)")
@@ -454,7 +457,7 @@ int cmCPackPKGGenerator::CopyInstallScript(const std::string& resdir,
 {
   std::string dst = cmStrCat(resdir, '/', name);
   cmSystemTools::CopyFileAlways(script, dst);
-  cmSystemTools::SetPermissions(dst.c_str(), 0777);
+  cmSystemTools::SetPermissions(dst, 0777);
   cmCPackLogger(cmCPackLog::LOG_VERBOSE,
                 "copy script : " << script << "\ninto " << dst << std::endl);
 

+ 40 - 22
Source/CPack/cmCPackProductBuildGenerator.cxx

@@ -58,7 +58,7 @@ int cmCPackProductBuildGenerator::PackageFiles()
     }
   }
 
-  std::string resDir = packageDirFileName + "/Contents";
+  std::string resDir = cmStrCat(packageDirFileName, "/Contents");
 
   if (this->IsSet("CPACK_PRODUCTBUILD_RESOURCES_DIR")) {
     std::string userResDir =
@@ -102,15 +102,24 @@ int cmCPackProductBuildGenerator::PackageFiles()
 
   pkgCmd << productbuild << " --distribution \"" << packageDirFileName
          << "/Contents/distribution.dist\""
-         << " --package-path \"" << packageDirFileName << "/Contents/Packages"
+            " --package-path \""
+         << packageDirFileName
+         << "/Contents/Packages"
+            "\""
+            " --resources \""
+         << resDir
          << "\""
-         << " --resources \"" << resDir << "\""
-         << " --version \"" << version << "\""
-         << (identifier.empty() ? "" : " --identifier \"" + identifier + "\"")
-         << (identityName.empty() ? "" : " --sign \"" + identityName + "\"")
-         << (keychainPath.empty() ? ""
-                                  : " --keychain \"" + keychainPath + "\"")
-         << " \"" << packageFileNames[0] << "\"";
+            " --version \""
+         << version << "\""
+         << (identifier.empty()
+               ? std::string{}
+               : cmStrCat(" --identifier \"", identifier, '"'))
+         << (identityName.empty() ? std::string{}
+                                  : cmStrCat(" --sign \"", identityName, '"'))
+         << (keychainPath.empty()
+               ? std::string{}
+               : cmStrCat(" --keychain \"", keychainPath, '"'))
+         << " \"" << packageFileNames[0] << '"';
 
   // Run ProductBuild
   return RunProductBuild(pkgCmd.str());
@@ -184,10 +193,10 @@ bool cmCPackProductBuildGenerator::GenerateComponentPackage(
 
   std::string resDir = packageFileDir;
   if (component) {
-    resDir += "/";
+    resDir += '/';
     resDir += component->Name;
   }
-  std::string scriptDir = resDir + "/scripts";
+  std::string scriptDir = cmStrCat(resDir, "/scripts");
 
   if (!cmsys::SystemTools::MakeDirectory(scriptDir.c_str())) {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -232,15 +241,24 @@ bool cmCPackProductBuildGenerator::GenerateComponentPackage(
     keychainPath = p;
   }
 
-  pkgCmd << pkgbuild << " --root \"" << packageDir << "\""
-         << " --identifier \"" << pkgId << "\""
-         << " --scripts \"" << scriptDir << "\""
-         << " --version \"" << version << "\""
-         << " --install-location \"/\""
-         << (identityName.empty() ? "" : " --sign \"" + identityName + "\"")
-         << (keychainPath.empty() ? ""
-                                  : " --keychain \"" + keychainPath + "\"")
-         << " \"" << packageFile << "\"";
+  pkgCmd << pkgbuild << " --root \"" << packageDir
+         << "\""
+            " --identifier \""
+         << pkgId
+         << "\""
+            " --scripts \""
+         << scriptDir
+         << "\""
+            " --version \""
+         << version
+         << "\""
+            " --install-location \"/\""
+         << (identityName.empty() ? std::string{}
+                                  : cmStrCat(" --sign \"", identityName, "\""))
+         << (keychainPath.empty()
+               ? std::string{}
+               : cmStrCat(" --keychain \"", keychainPath, "\""))
+         << " \"" << packageFile << '"';
 
   if (component && !component->Plist.empty()) {
     pkgCmd << " --component-plist \"" << component->Plist << "\"";
@@ -253,10 +271,10 @@ bool cmCPackProductBuildGenerator::GenerateComponentPackage(
 cmValue cmCPackProductBuildGenerator::GetComponentScript(
   const char* script, const char* component_name)
 {
-  std::string scriptname = std::string("CPACK_") + script + "_";
+  std::string scriptname = cmStrCat("CPACK_", script, '_');
   if (component_name) {
     scriptname += cmSystemTools::UpperCase(component_name);
-    scriptname += "_";
+    scriptname += '_';
   }
   scriptname += "SCRIPT";
 

File diff suppressed because it is too large
+ 173 - 171
Source/cmGlobalXCodeGenerator.cxx


+ 1 - 1
Source/cmGlobalXCodeGenerator.h

@@ -120,7 +120,7 @@ public:
    * Used to determine if this generator supports DEPFILE option.
    */
   bool SupportsCustomCommandDepfile() const override { return true; }
-  virtual cm::optional<cmDepfileFormat> DepfileFormat() const override
+  cm::optional<cmDepfileFormat> DepfileFormat() const override
   {
     return this->XcodeBuildSystem == BuildSystem::One
       ? cmDepfileFormat::MakeDepfile

+ 1 - 1
Source/cmLocalXCodeGenerator.cxx

@@ -31,7 +31,7 @@ std::string cmLocalXCodeGenerator::GetTargetDirectory(
   cmGeneratorTarget const*) const
 {
   // No per-target directory for this generator (yet).
-  return "";
+  return std::string{};
 }
 
 void cmLocalXCodeGenerator::AppendFlagEscape(std::string& flags,

+ 1 - 3
Source/cmXCode21Object.cxx

@@ -26,9 +26,7 @@ void cmXCode21Object::PrintComment(std::ostream& out)
   if (this->Comment.empty()) {
     return;
   }
-  out << " /* ";
-  out << this->Comment;
-  out << " */";
+  out << " /* " << this->Comment << " */";
 }
 
 void cmXCode21Object::PrintList(

+ 7 - 5
Source/cmXCodeObject.cxx

@@ -4,6 +4,8 @@
 
 #include <ostream>
 
+#include <cmext/string_view>
+
 #include <CoreFoundation/CoreFoundation.h>
 
 const char* cmXCodeObject::PBXTypeNames[] = {
@@ -91,13 +93,13 @@ void cmXCodeObject::Print(std::ostream& out)
   out << this->Id;
   this->PrintComment(out);
   out << " = {";
-  if (separator == "\n") {
+  if (separator == "\n"_s) {
     out << separator;
   }
   cmXCodeObject::Indent(3 * indentFactor, out);
   out << "isa = " << PBXTypeNames[this->IsA] << ";" << separator;
   for (const auto& keyVal : this->ObjectAttributes) {
-    if (keyVal.first == "isa") {
+    if (keyVal.first == "isa"_s) {
       continue;
     }
 
@@ -142,7 +144,7 @@ void cmXCodeObject::PrintAttribute(std::ostream& out, int level,
 
     case ATTRIBUTE_GROUP: {
       out << name << " = {";
-      if (separator == "\n") {
+      if (separator == "\n"_s) {
         out << separator;
       }
       for (const auto& keyVal : object->ObjectAttributes) {
@@ -156,7 +158,7 @@ void cmXCodeObject::PrintAttribute(std::ostream& out, int level,
     case OBJECT_REF: {
       cmXCodeObject::PrintString(out, name);
       out << " = " << object->Object->Id;
-      if (object->Object->HasComment() && name != "remoteGlobalIDString") {
+      if (object->Object->HasComment() && name != "remoteGlobalIDString"_s) {
         object->Object->PrintComment(out);
       }
       out << ";" << separator;
@@ -180,7 +182,7 @@ void cmXCodeObject::PrintList(std::vector<cmXCodeObject*> const& objs,
 {
   cmXCodeObject::Indent(1, out);
   out << "objects = {\n";
-  for (auto obj : objs) {
+  for (auto* obj : objs) {
     if (obj->TypeValue == OBJECT) {
       obj->Print(out);
     }

+ 1 - 1
Source/cmXCodeObject.h

@@ -129,7 +129,7 @@ public:
   // search the attribute list for an object of the specified type
   cmXCodeObject* GetObject(cmXCodeObject::PBXType t) const
   {
-    for (auto o : this->List) {
+    for (auto* o : this->List) {
       if (o->IsA == t) {
         return o;
       }

+ 4 - 3
Source/cmXCodeScheme.cxx

@@ -7,6 +7,7 @@
 #include <utility>
 
 #include <cmext/algorithm>
+#include <cmext/string_view>
 
 #include "cmsys/String.h"
 
@@ -121,7 +122,7 @@ void cmXCodeScheme::WriteTestAction(cmXMLWriter& xout,
   xout.Attribute("shouldUseLaunchSchemeArgsEnv", "YES");
 
   xout.StartElement("Testables");
-  for (auto test : this->Tests) {
+  for (auto const* test : this->Tests) {
     xout.StartElement("TestableReference");
     xout.BreakAttributes();
     xout.Attribute("skipped", "NO");
@@ -157,7 +158,7 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout,
     cmValue launchMode =
       this->Target->GetTarget()->GetProperty("XCODE_SCHEME_LAUNCH_MODE");
     std::string value = "0"; // == 'AUTO'
-    if (launchMode && *launchMode == "WAIT") {
+    if (launchMode && *launchMode == "WAIT"_s) {
       value = "1";
     }
     xout.Attribute("launchStyle", value);
@@ -447,7 +448,7 @@ void cmXCodeScheme::WriteBuildableReference(cmXMLWriter& xout,
   std::string const noConfig; // FIXME: What config to use here?
   xout.Attribute("BuildableName", xcObj->GetTarget()->GetFullName(noConfig));
   xout.Attribute("BlueprintName", xcObj->GetTarget()->GetName());
-  xout.Attribute("ReferencedContainer", "container:" + container);
+  xout.Attribute("ReferencedContainer", cmStrCat("container:", container));
   xout.EndElement();
 }
 

+ 8 - 7
Source/cmXcFramework.cxx

@@ -4,6 +4,7 @@
 
 #include <string>
 
+#include <cm/string_view>
 #include <cmext/string_view>
 
 #include <cm3p/json/value.h>
@@ -43,23 +44,23 @@ bool PlistSupportedPlatformHelper(
     return false;
   }
 
-  if (value->asString() == "macos") {
+  if (value->asString() == "macos"_s) {
     platform = cmXcFrameworkPlistSupportedPlatform::macOS;
     return true;
   }
-  if (value->asString() == "ios") {
+  if (value->asString() == "ios"_s) {
     platform = cmXcFrameworkPlistSupportedPlatform::iOS;
     return true;
   }
-  if (value->asString() == "tvos") {
+  if (value->asString() == "tvos"_s) {
     platform = cmXcFrameworkPlistSupportedPlatform::tvOS;
     return true;
   }
-  if (value->asString() == "watchos") {
+  if (value->asString() == "watchos"_s) {
     platform = cmXcFrameworkPlistSupportedPlatform::watchOS;
     return true;
   }
-  if (value->asString() == "xros") {
+  if (value->asString() == "xros"_s) {
     platform = cmXcFrameworkPlistSupportedPlatform::visionOS;
     return true;
   }
@@ -112,8 +113,8 @@ cm::optional<cmXcFrameworkPlist> cmParseXcFrameworkPlist(
       cmStrCat("Invalid xcframework .plist file:\n  ", plistPath), bt);
     return cm::nullopt;
   }
-  if (metadata.CFBundlePackageType != "XFWK" ||
-      metadata.XCFrameworkFormatVersion != "1.0") {
+  if (metadata.CFBundlePackageType != "XFWK"_s ||
+      metadata.XCFrameworkFormatVersion != "1.0"_s) {
     mf.GetCMakeInstance()->IssueMessage(
       MessageType::FATAL_ERROR,
       cmStrCat("Expected:\n  ", plistPath,

Some files were not shown because too many files changed in this diff