summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/CPack/IFW/cmCPackIFWCommon.cxx15
-rw-r--r--Source/CPack/IFW/cmCPackIFWGenerator.cxx5
-rw-r--r--Source/CPack/IFW/cmCPackIFWPackage.cxx3
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.cxx12
-rw-r--r--Source/CPack/cmCPackBundleGenerator.cxx3
-rw-r--r--Source/CPack/cmCPackDebGenerator.cxx4
-rw-r--r--Source/CPack/cmCPackDragNDropGenerator.cxx4
-rw-r--r--Source/CPack/cmCPackFreeBSDGenerator.cxx27
-rw-r--r--Source/CPack/cmCPackGenerator.cxx55
-rw-r--r--Source/CPack/cmCPackNSISGenerator.cxx22
-rw-r--r--Source/CPack/cpack.cxx5
-rw-r--r--Source/CTest/cmCTestGIT.cxx3
-rw-r--r--Source/CTest/cmCTestP4.cxx4
-rw-r--r--Source/CTest/cmCTestScriptHandler.cxx7
-rw-r--r--Source/CTest/cmCTestSubmitCommand.cxx6
-rw-r--r--Source/CTest/cmCTestSubmitHandler.cxx5
-rw-r--r--Source/CTest/cmCTestTestHandler.cxx23
-rw-r--r--Source/CursesDialog/cmCursesCacheEntryComposite.cxx5
-rw-r--r--Source/cmCTest.cxx7
-rw-r--r--Source/cmCacheManager.cxx9
-rw-r--r--Source/cmCommonTargetGenerator.cxx4
-rw-r--r--Source/cmComputeLinkDepends.cxx3
-rw-r--r--Source/cmComputeLinkInformation.cxx31
-rw-r--r--Source/cmConditionEvaluator.cxx5
-rw-r--r--Source/cmCoreTryCompile.cxx3
-rw-r--r--Source/cmCustomCommandGenerator.cxx5
-rw-r--r--Source/cmExportBuildAndroidMKGenerator.cxx8
-rw-r--r--Source/cmExportFileGenerator.cxx5
-rw-r--r--Source/cmExportTryCompileFileGenerator.cxx3
-rw-r--r--Source/cmExtraCodeBlocksGenerator.cxx5
-rw-r--r--Source/cmExtraEclipseCDT4Generator.cxx11
-rw-r--r--Source/cmExtraSublimeTextGenerator.cxx3
-rw-r--r--Source/cmFileCopier.cxx4
-rw-r--r--Source/cmFileSet.cxx9
-rw-r--r--Source/cmFindBase.cxx5
-rw-r--r--Source/cmFindPackageCommand.cxx3
-rw-r--r--Source/cmGeneratorExpressionNode.cxx6
-rw-r--r--Source/cmGeneratorTarget.cxx61
-rw-r--r--Source/cmGhsMultiTargetGenerator.cxx3
-rw-r--r--Source/cmGlobalGenerator.cxx14
-rw-r--r--Source/cmGlobalGhsMultiGenerator.cxx3
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx3
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx21
-rw-r--r--Source/cmGraphVizWriter.cxx6
-rw-r--r--Source/cmInstallCommand.cxx11
-rw-r--r--Source/cmLDConfigLDConfigTool.cxx4
-rw-r--r--Source/cmListFileCache.cxx7
-rw-r--r--Source/cmListFileCache.h3
-rw-r--r--Source/cmLocalGenerator.cxx27
-rw-r--r--Source/cmLocalNinjaGenerator.cxx3
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx12
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx13
-rw-r--r--Source/cmMakefile.cxx17
-rw-r--r--Source/cmMakefileLibraryTargetGenerator.cxx3
-rw-r--r--Source/cmMakefileTargetGenerator.cxx13
-rw-r--r--Source/cmMessageCommand.cxx7
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx3
-rw-r--r--Source/cmNinjaTargetGenerator.cxx11
-rw-r--r--Source/cmOutputConverter.cxx5
-rw-r--r--Source/cmOutputRequiredFilesCommand.cxx5
-rw-r--r--Source/cmParseArgumentsCommand.cxx3
-rw-r--r--Source/cmQtAutoGenInitializer.cxx21
-rw-r--r--Source/cmRemoveCommand.cxx7
-rw-r--r--Source/cmSearchPath.cxx5
-rw-r--r--Source/cmStandardLevelResolver.cxx5
-rw-r--r--Source/cmStringAlgorithms.cxx7
-rw-r--r--Source/cmStringAlgorithms.h29
-rw-r--r--Source/cmTarget.cxx9
-rw-r--r--Source/cmTargetSourcesCommand.cxx3
-rw-r--r--Source/cmTestGenerator.cxx22
-rw-r--r--Source/cmTryRunCommand.cxx3
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx18
-rw-r--r--Source/cmXCodeScheme.cxx5
-rw-r--r--Source/cmake.cxx9
-rw-r--r--Source/cmakemain.cxx3
-rw-r--r--Source/cmcmd.cxx11
-rw-r--r--Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx3
77 files changed, 374 insertions, 381 deletions
diff --git a/Source/CPack/IFW/cmCPackIFWCommon.cxx b/Source/CPack/IFW/cmCPackIFWCommon.cxx
index 5d995c335d..4ff3a105e9 100644
--- a/Source/CPack/IFW/cmCPackIFWCommon.cxx
+++ b/Source/CPack/IFW/cmCPackIFWCommon.cxx
@@ -5,12 +5,11 @@
#include <cstddef> // IWYU pragma: keep
#include <sstream>
#include <utility>
-#include <vector>
#include "cmCPackGenerator.h"
#include "cmCPackIFWGenerator.h"
#include "cmCPackLog.h" // IWYU pragma: keep
-#include "cmStringAlgorithms.h"
+#include "cmList.h"
#include "cmSystemTools.h"
#include "cmTimestamp.h"
#include "cmVersionConfig.h"
@@ -76,12 +75,12 @@ bool cmCPackIFWCommon::IsVersionEqual(const char* version) const
void cmCPackIFWCommon::ExpandListArgument(
const std::string& arg, std::map<std::string, std::string>& argsOut)
{
- std::vector<std::string> args = cmExpandedList(arg, false);
+ cmList args{ arg };
if (args.empty()) {
return;
}
- std::size_t i = 0;
+ cmList::index_type i = 0;
std::size_t c = args.size();
if (c % 2) {
argsOut[""] = args[i];
@@ -89,7 +88,7 @@ void cmCPackIFWCommon::ExpandListArgument(
}
--c;
- for (; i < c; i += 2) {
+ for (; i < static_cast<cmList::index_type>(c); i += 2) {
argsOut[args[i]] = args[i + 1];
}
}
@@ -97,12 +96,12 @@ void cmCPackIFWCommon::ExpandListArgument(
void cmCPackIFWCommon::ExpandListArgument(
const std::string& arg, std::multimap<std::string, std::string>& argsOut)
{
- std::vector<std::string> args = cmExpandedList(arg, false);
+ cmList args{ arg };
if (args.empty()) {
return;
}
- std::size_t i = 0;
+ cmList::index_type i = 0;
std::size_t c = args.size();
if (c % 2) {
argsOut.insert(std::pair<std::string, std::string>("", args[i]));
@@ -110,7 +109,7 @@ void cmCPackIFWCommon::ExpandListArgument(
}
--c;
- for (; i < c; i += 2) {
+ for (; i < static_cast<cmList::index_type>(c); i += 2) {
argsOut.insert(std::pair<std::string, std::string>(args[i], args[i + 1]));
}
}
diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.cxx b/Source/CPack/IFW/cmCPackIFWGenerator.cxx
index bc14eb40b1..5724175510 100644
--- a/Source/CPack/IFW/cmCPackIFWGenerator.cxx
+++ b/Source/CPack/IFW/cmCPackIFWGenerator.cxx
@@ -14,6 +14,7 @@
#include "cmCPackLog.h" // IWYU pragma: keep
#include "cmDuration.h"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -409,8 +410,8 @@ int cmCPackIFWGenerator::InitializeInternal()
// Repositories
if (cmValue RepoAllStr = this->GetOption("CPACK_IFW_REPOSITORIES_ALL")) {
- std::vector<std::string> RepoAllVector = cmExpandedList(RepoAllStr);
- for (std::string const& r : RepoAllVector) {
+ cmList RepoAllList{ RepoAllStr };
+ for (std::string const& r : RepoAllList) {
this->GetRepository(r);
}
}
diff --git a/Source/CPack/IFW/cmCPackIFWPackage.cxx b/Source/CPack/IFW/cmCPackIFWPackage.cxx
index 1668fb5d56..b759eff46e 100644
--- a/Source/CPack/IFW/cmCPackIFWPackage.cxx
+++ b/Source/CPack/IFW/cmCPackIFWPackage.cxx
@@ -15,6 +15,7 @@
#include "cmCPackIFWInstaller.h"
#include "cmCPackLog.h" // IWYU pragma: keep
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmTimestamp.h"
@@ -455,7 +456,7 @@ int cmCPackIFWPackage::ConfigureFromPrefix(const std::string& prefix)
if (this->IsSetToEmpty(option)) {
this->AlienAutoDependOn.clear();
} else if (cmValue value = this->GetOption(option)) {
- std::vector<std::string> depsOn = cmExpandedList(value);
+ cmList depsOn{ value };
for (std::string const& d : depsOn) {
DependenceStruct dep(d);
if (this->Generator->Packages.count(dep.Name)) {
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index aeb3db3539..1ce346f48e 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -18,6 +18,7 @@
#include "cmCryptoHash.h"
#include "cmGeneratedFileStream.h"
#include "cmInstalledFile.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmUuid.h"
@@ -239,7 +240,7 @@ bool cmCPackWIXGenerator::InitializeWiXConfiguration()
cmValue patchFilePath = GetOption("CPACK_WIX_PATCH_FILE");
if (patchFilePath) {
- std::vector<std::string> patchFilePaths = cmExpandedList(patchFilePath);
+ cmList patchFilePaths{ patchFilePath };
for (std::string const& p : patchFilePaths) {
if (!this->Patch->LoadFragments(p)) {
@@ -322,8 +323,7 @@ void cmCPackWIXGenerator::AppendUserSuppliedExtraObjects(std::ostream& stream)
if (!cpackWixExtraObjects)
return;
- std::vector<std::string> expandedExtraObjects =
- cmExpandedList(cpackWixExtraObjects);
+ cmList expandedExtraObjects{ cpackWixExtraObjects };
for (std::string const& obj : expandedExtraObjects) {
stream << " " << QuotePath(obj);
@@ -1160,7 +1160,7 @@ void cmCPackWIXGenerator::CollectExtensions(std::string const& variableName,
if (!variableContent)
return;
- std::vector<std::string> list = cmExpandedList(variableContent);
+ cmList list{ variableContent };
extensions.insert(list.begin(), list.end());
}
@@ -1172,7 +1172,7 @@ void cmCPackWIXGenerator::CollectXmlNamespaces(std::string const& variableName,
return;
}
- std::vector<std::string> list = cmExpandedList(variableContent);
+ cmList list{ variableContent };
for (std::string const& str : list) {
auto pos = str.find('=');
if (pos != std::string::npos) {
@@ -1200,7 +1200,7 @@ void cmCPackWIXGenerator::AddCustomFlags(std::string const& variableName,
if (!variableContent)
return;
- std::vector<std::string> list = cmExpandedList(variableContent);
+ cmList list{ variableContent };
for (std::string const& i : list) {
stream << " " << QuotePath(i);
diff --git a/Source/CPack/cmCPackBundleGenerator.cxx b/Source/CPack/cmCPackBundleGenerator.cxx
index b3d425aa51..7e6e4737dd 100644
--- a/Source/CPack/cmCPackBundleGenerator.cxx
+++ b/Source/CPack/cmCPackBundleGenerator.cxx
@@ -6,6 +6,7 @@
#include <vector>
#include "cmCPackLog.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -191,7 +192,7 @@ int cmCPackBundleGenerator::SignBundle(const std::string& src_dir)
cmValue sign_files = this->GetOption("CPACK_BUNDLE_APPLE_CODESIGN_FILES");
- std::vector<std::string> relFiles = cmExpandedList(sign_files);
+ cmList relFiles{ sign_files };
// sign the files supplied by the user, ie. frameworks.
for (auto const& file : relFiles) {
diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx
index 6ba28d166c..34c56c9993 100644
--- a/Source/CPack/cmCPackDebGenerator.cxx
+++ b/Source/CPack/cmCPackDebGenerator.cxx
@@ -20,6 +20,7 @@
#include "cmCPackLog.h"
#include "cmCryptoHash.h"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -427,8 +428,7 @@ bool DebGenerator::generateControlTar(std::string const& md5Filename) const
// default
control_tar.ClearPermissions();
- std::vector<std::string> controlExtraList =
- cmExpandedList(this->ControlExtra);
+ cmList controlExtraList{ this->ControlExtra };
for (std::string const& i : controlExtraList) {
std::string filenamename = cmsys::SystemTools::GetFilenameName(i);
std::string localcopy = this->WorkDir + "/" + filenamename;
diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx
index 68e7ba3651..2a0409db0d 100644
--- a/Source/CPack/cmCPackDragNDropGenerator.cxx
+++ b/Source/CPack/cmCPackDragNDropGenerator.cxx
@@ -19,6 +19,7 @@
#include "cmCPackLog.h"
#include "cmDuration.h"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -128,8 +129,7 @@ int cmCPackDragNDropGenerator::InitializeInternal()
return 0;
}
- std::vector<std::string> languages =
- cmExpandedList(this->GetOption("CPACK_DMG_SLA_LANGUAGES"));
+ cmList languages{ this->GetOption("CPACK_DMG_SLA_LANGUAGES") };
if (languages.empty()) {
cmCPackLogger(cmCPackLog::LOG_ERROR,
"CPACK_DMG_SLA_LANGUAGES set but empty" << std::endl);
diff --git a/Source/CPack/cmCPackFreeBSDGenerator.cxx b/Source/CPack/cmCPackFreeBSDGenerator.cxx
index ea7b24b488..0840e33cc8 100644
--- a/Source/CPack/cmCPackFreeBSDGenerator.cxx
+++ b/Source/CPack/cmCPackFreeBSDGenerator.cxx
@@ -2,15 +2,6 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCPackFreeBSDGenerator.h"
-#include "cmArchiveWrite.h"
-#include "cmCPackArchiveGenerator.h"
-#include "cmCPackLog.h"
-#include "cmGeneratedFileStream.h"
-#include "cmStringAlgorithms.h"
-#include "cmSystemTools.h"
-#include "cmWorkingDirectory.h"
-
-// Needed for ::open() and ::stat()
#include <algorithm>
#include <ostream>
#include <utility>
@@ -21,6 +12,15 @@
#include <sys/stat.h>
+#include "cmArchiveWrite.h"
+#include "cmCPackArchiveGenerator.h"
+#include "cmCPackLog.h"
+#include "cmGeneratedFileStream.h"
+#include "cmList.h"
+#include "cmStringAlgorithms.h"
+#include "cmSystemTools.h"
+#include "cmWorkingDirectory.h"
+
// Suffix used to tell libpkg what compression to use
static const char FreeBSDPackageCompression[] = "txz";
static const char FreeBSDPackageSuffix_17[] = ".pkg";
@@ -292,8 +292,7 @@ void cmCPackFreeBSDGenerator::write_manifest_fields(
manifest << ManifestKeyValue(
"desc", var_lookup("CPACK_FREEBSD_PACKAGE_DESCRIPTION"));
manifest << ManifestKeyValue("www", var_lookup("CPACK_FREEBSD_PACKAGE_WWW"));
- std::vector<std::string> licenses =
- cmExpandedList(var_lookup("CPACK_FREEBSD_PACKAGE_LICENSE"));
+ cmList licenses{ var_lookup("CPACK_FREEBSD_PACKAGE_LICENSE") };
std::string licenselogic("single");
if (licenses.empty()) {
cmSystemTools::SetFatalErrorOccurred();
@@ -302,12 +301,10 @@ void cmCPackFreeBSDGenerator::write_manifest_fields(
}
manifest << ManifestKeyValue("licenselogic", licenselogic);
manifest << (ManifestKeyListValue("licenses") << licenses);
- std::vector<std::string> categories =
- cmExpandedList(var_lookup("CPACK_FREEBSD_PACKAGE_CATEGORIES"));
+ cmList categories{ var_lookup("CPACK_FREEBSD_PACKAGE_CATEGORIES") };
manifest << (ManifestKeyListValue("categories") << categories);
manifest << ManifestKeyValue("prefix", var_lookup("CMAKE_INSTALL_PREFIX"));
- std::vector<std::string> deps =
- cmExpandedList(var_lookup("CPACK_FREEBSD_PACKAGE_DEPS"));
+ cmList deps{ var_lookup("CPACK_FREEBSD_PACKAGE_DEPS") };
if (!deps.empty()) {
manifest << (ManifestKeyDepsValue("deps") << deps);
}
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx
index 2ac5b3dc77..83194a695f 100644
--- a/Source/CPack/cmCPackGenerator.cxx
+++ b/Source/CPack/cmCPackGenerator.cxx
@@ -19,6 +19,7 @@
#include "cmFileTimes.h"
#include "cmGeneratedFileStream.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmState.h"
#include "cmStateSnapshot.h"
@@ -216,8 +217,7 @@ int cmCPackGenerator::InstallProject()
cmValue default_dir_install_permissions =
this->GetOption("CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS");
if (cmNonempty(default_dir_install_permissions)) {
- std::vector<std::string> items =
- cmExpandedList(default_dir_install_permissions);
+ cmList items{ default_dir_install_permissions };
for (const auto& arg : items) {
if (!cmFSPermissions::stringToModeT(arg, default_dir_mode_v)) {
cmCPackLogger(cmCPackLog::LOG_ERROR,
@@ -266,7 +266,7 @@ int cmCPackGenerator::InstallProject()
// Run pre-build actions
cmValue preBuildScripts = this->GetOption("CPACK_PRE_BUILD_SCRIPTS");
if (preBuildScripts) {
- const auto scripts = cmExpandedList(preBuildScripts, false);
+ const cmList scripts{ preBuildScripts };
for (const auto& script : scripts) {
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
"Executing pre-build script: " << script << std::endl);
@@ -296,8 +296,7 @@ int cmCPackGenerator::InstallProjectViaInstallCommands(
std::string tempInstallDirectoryEnv =
cmStrCat("CMAKE_INSTALL_PREFIX=", tempInstallDirectory);
cmSystemTools::PutEnv(tempInstallDirectoryEnv);
- std::vector<std::string> installCommandsVector =
- cmExpandedList(installCommands);
+ cmList installCommandsVector{ installCommands };
for (std::string const& ic : installCommandsVector) {
cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Execute: " << ic << std::endl);
std::string output;
@@ -333,8 +332,7 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories(
std::vector<cmsys::RegularExpression> ignoreFilesRegex;
cmValue cpackIgnoreFiles = this->GetOption("CPACK_IGNORE_FILES");
if (cpackIgnoreFiles) {
- std::vector<std::string> ignoreFilesRegexString =
- cmExpandedList(cpackIgnoreFiles);
+ cmList ignoreFilesRegexString{ cpackIgnoreFiles };
for (std::string const& ifr : ignoreFilesRegexString) {
cmCPackLogger(cmCPackLog::LOG_VERBOSE,
"Create ignore files regex for: " << ifr << std::endl);
@@ -343,9 +341,8 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories(
}
cmValue installDirectories = this->GetOption("CPACK_INSTALLED_DIRECTORIES");
if (cmNonempty(installDirectories)) {
- std::vector<std::string> installDirectoriesVector =
- cmExpandedList(installDirectories);
- if (installDirectoriesVector.size() % 2 != 0) {
+ cmList installDirectoriesList{ installDirectories };
+ if (installDirectoriesList.size() % 2 != 0) {
cmCPackLogger(
cmCPackLog::LOG_ERROR,
"CPACK_INSTALLED_DIRECTORIES should contain pairs of <directory> "
@@ -355,10 +352,10 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories(
<< std::endl);
return 0;
}
- std::vector<std::string>::iterator it;
+ cmList::iterator it;
const std::string& tempDir = tempInstallDirectory;
- for (it = installDirectoriesVector.begin();
- it != installDirectoriesVector.end(); ++it) {
+ for (it = installDirectoriesList.begin();
+ it != installDirectoriesList.end(); ++it) {
std::vector<std::pair<std::string, std::string>> symlinkedFiles;
cmCPackLogger(cmCPackLog::LOG_DEBUG, "Find files" << std::endl);
cmsys::Glob gl;
@@ -485,7 +482,7 @@ int cmCPackGenerator::InstallProjectViaInstallScript(
if (cmakeScripts && !cmakeScripts->empty()) {
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
"- Install scripts: " << cmakeScripts << std::endl);
- std::vector<std::string> cmakeScriptsVector = cmExpandedList(cmakeScripts);
+ cmList cmakeScriptsVector{ cmakeScripts };
for (std::string const& installScript : cmakeScriptsVector) {
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
@@ -549,14 +546,12 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
<< std::endl);
return 0;
}
- std::vector<std::string> cmakeProjectsVector =
- cmExpandedList(cmakeProjects);
- std::vector<std::string>::iterator it;
- for (it = cmakeProjectsVector.begin(); it != cmakeProjectsVector.end();
- ++it) {
- if (it + 1 == cmakeProjectsVector.end() ||
- it + 2 == cmakeProjectsVector.end() ||
- it + 3 == cmakeProjectsVector.end()) {
+ cmList cmakeProjectsList{ cmakeProjects };
+ cmList::iterator it;
+ for (it = cmakeProjectsList.begin(); it != cmakeProjectsList.end(); ++it) {
+ if (it + 1 == cmakeProjectsList.end() ||
+ it + 2 == cmakeProjectsList.end() ||
+ it + 3 == cmakeProjectsList.end()) {
cmCPackLogger(
cmCPackLog::LOG_ERROR,
"Not enough items on list: CPACK_INSTALL_CMAKE_PROJECTS. "
@@ -594,9 +589,8 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
cmSystemTools::UpperCase(project.Component) + "_INSTALL_TYPES";
cmValue installTypes = this->GetOption(installTypesVar);
if (cmNonempty(installTypes)) {
- std::vector<std::string> installTypesVector =
- cmExpandedList(installTypes);
- for (std::string const& installType : installTypesVector) {
+ cmList installTypesList{ installTypes };
+ for (std::string const& installType : installTypesList) {
project.InstallationTypes.push_back(
this->GetInstallationType(project.ProjectName, installType));
}
@@ -1129,7 +1123,7 @@ int cmCPackGenerator::DoPackage()
this->MakefileMap->AddDefinition("CPACK_PACKAGE_FILES",
cmJoin(this->packageFileNames, ";"));
- const auto scripts = cmExpandedList(postBuildScripts, false);
+ const cmList scripts{ postBuildScripts };
for (const auto& script : scripts) {
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
"Executing post-build script: " << script << std::endl);
@@ -1595,9 +1589,8 @@ cmCPackComponent* cmCPackGenerator::GetComponent(
// Determine the installation types.
cmValue installTypes = this->GetOption(macroPrefix + "_INSTALL_TYPES");
if (cmNonempty(installTypes)) {
- std::vector<std::string> installTypesVector =
- cmExpandedList(installTypes);
- for (std::string const& installType : installTypesVector) {
+ cmList installTypesList{ installTypes };
+ for (auto const& installType : installTypesList) {
component->InstallationTypes.push_back(
this->GetInstallationType(projectName, installType));
}
@@ -1606,8 +1599,8 @@ cmCPackComponent* cmCPackGenerator::GetComponent(
// Determine the component dependencies.
cmValue depends = this->GetOption(macroPrefix + "_DEPENDS");
if (cmNonempty(depends)) {
- std::vector<std::string> dependsVector = cmExpandedList(depends);
- for (std::string const& depend : dependsVector) {
+ cmList dependsList{ depends };
+ for (auto const& depend : dependsList) {
cmCPackComponent* child = this->GetComponent(projectName, depend);
component->Dependencies.push_back(child);
child->ReverseDependencies.push_back(component);
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index d7119c5223..38a9d59f2c 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -19,6 +19,7 @@
#include "cmCPackLog.h"
#include "cmDuration.h"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -569,9 +570,8 @@ int cmCPackNSISGenerator::InitializeInternal()
cmCPackLogger(cmCPackLog::LOG_DEBUG,
"The cpackPackageExecutables: " << cpackPackageExecutables
<< "." << std::endl);
- std::vector<std::string> cpackPackageExecutablesVector =
- cmExpandedList(cpackPackageExecutables);
- if (cpackPackageExecutablesVector.size() % 2 != 0) {
+ cmList cpackPackageExecutablesList{ cpackPackageExecutables };
+ if (cpackPackageExecutablesList.size() % 2 != 0) {
cmCPackLogger(
cmCPackLog::LOG_ERROR,
"CPACK_PACKAGE_EXECUTABLES should contain pairs of <executable> and "
@@ -579,9 +579,9 @@ int cmCPackNSISGenerator::InitializeInternal()
<< std::endl);
return 0;
}
- std::vector<std::string>::iterator it;
- for (it = cpackPackageExecutablesVector.begin();
- it != cpackPackageExecutablesVector.end(); ++it) {
+ cmList::iterator it;
+ for (it = cpackPackageExecutablesList.begin();
+ it != cpackPackageExecutablesList.end(); ++it) {
std::string execName = *it;
++it;
std::string linkName = *it;
@@ -622,9 +622,8 @@ void cmCPackNSISGenerator::CreateMenuLinks(std::ostream& str,
}
cmCPackLogger(cmCPackLog::LOG_DEBUG,
"The cpackMenuLinks: " << cpackMenuLinks << "." << std::endl);
- std::vector<std::string> cpackMenuLinksVector =
- cmExpandedList(cpackMenuLinks);
- if (cpackMenuLinksVector.size() % 2 != 0) {
+ cmList cpackMenuLinksList{ cpackMenuLinks };
+ if (cpackMenuLinksList.size() % 2 != 0) {
cmCPackLogger(
cmCPackLog::LOG_ERROR,
"CPACK_NSIS_MENU_LINKS should contain pairs of <shortcut target> and "
@@ -636,9 +635,8 @@ void cmCPackNSISGenerator::CreateMenuLinks(std::ostream& str,
static cmsys::RegularExpression urlRegex(
"^(mailto:|(ftps?|https?|news)://).*$");
- std::vector<std::string>::iterator it;
- for (it = cpackMenuLinksVector.begin(); it != cpackMenuLinksVector.end();
- ++it) {
+ cmList::iterator it;
+ for (it = cpackMenuLinksList.begin(); it != cpackMenuLinksList.end(); ++it) {
std::string sourceName = *it;
const bool url = urlRegex.find(sourceName);
diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx
index 234bc59352..90716e6e0d 100644
--- a/Source/CPack/cpack.cxx
+++ b/Source/CPack/cpack.cxx
@@ -29,6 +29,7 @@
#include "cmDocumentationEntry.h"
#include "cmGlobalGenerator.h"
#include "cmJSONState.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmState.h"
#include "cmStateSnapshot.h"
@@ -509,8 +510,8 @@ int main(int argc, char const* const* argv)
cmCPack_Log(&log, cmCPackLog::LOG_ERROR,
"CPack generator not specified\n");
} else {
- std::vector<std::string> generatorsVector = cmExpandedList(*genList);
- for (std::string const& gen : generatorsVector) {
+ cmList generatorsList{ *genList };
+ for (std::string const& gen : generatorsList) {
cmMakefile::ScopePushPop raii(&globalMF);
cmMakefile* mf = &globalMF;
cmCPack_Log(&log, cmCPackLog::LOG_VERBOSE,
diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx
index b2fb069fd5..a6e7ac52c8 100644
--- a/Source/CTest/cmCTestGIT.cxx
+++ b/Source/CTest/cmCTestGIT.cxx
@@ -14,6 +14,7 @@
#include "cmCTest.h"
#include "cmCTestVC.h"
+#include "cmList.h"
#include "cmProcessOutput.h"
#include "cmProcessTools.h"
#include "cmStringAlgorithms.h"
@@ -215,7 +216,7 @@ bool cmCTestGIT::UpdateByFetchAndReset()
bool cmCTestGIT::UpdateByCustom(std::string const& custom)
{
- std::vector<std::string> git_custom_command = cmExpandedList(custom, true);
+ cmList git_custom_command{ custom, cmList::EmptyElements::Yes };
std::vector<char const*> git_custom;
git_custom.reserve(git_custom_command.size() + 1);
for (std::string const& i : git_custom_command) {
diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx
index 0e67c4122e..e22ec4b556 100644
--- a/Source/CTest/cmCTestP4.cxx
+++ b/Source/CTest/cmCTestP4.cxx
@@ -13,9 +13,9 @@
#include "cmCTest.h"
#include "cmCTestVC.h"
+#include "cmList.h"
#include "cmProcessTools.h"
#include "cmRange.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
cmCTestP4::cmCTestP4(cmCTest* ct, std::ostream& log)
@@ -460,7 +460,7 @@ bool cmCTestP4::LoadModifications()
bool cmCTestP4::UpdateCustom(const std::string& custom)
{
- std::vector<std::string> p4_custom_command = cmExpandedList(custom, true);
+ cmList p4_custom_command{ custom, cmList::EmptyElements::Yes };
std::vector<char const*> p4_custom;
p4_custom.reserve(p4_custom_command.size() + 1);
diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx
index ee06b29c67..461ad1a947 100644
--- a/Source/CTest/cmCTestScriptHandler.cxx
+++ b/Source/CTest/cmCTestScriptHandler.cxx
@@ -33,6 +33,7 @@
#include "cmDuration.h"
#include "cmGeneratedFileStream.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmState.h"
#include "cmStateDirectory.h"
@@ -521,7 +522,7 @@ int cmCTestScriptHandler::RunCurrentScript()
// set any environment variables
if (!this->CTestEnv.empty()) {
- std::vector<std::string> envArgs = cmExpandedList(this->CTestEnv);
+ cmList envArgs{ this->CTestEnv };
cmSystemTools::AppendEnv(envArgs);
}
@@ -625,7 +626,7 @@ int cmCTestScriptHandler::PerformExtraUpdates()
// do an initial cvs update as required
command = this->UpdateCmd;
for (std::string const& eu : this->ExtraUpdates) {
- std::vector<std::string> cvsArgs = cmExpandedList(eu);
+ cmList cvsArgs{ eu };
if (cvsArgs.size() == 2) {
std::string fullCommand = cmStrCat(command, " update ", cvsArgs[1]);
output.clear();
@@ -764,7 +765,7 @@ int cmCTestScriptHandler::RunConfigurationDashboard()
}
// run ctest, it may be more than one command in here
- std::vector<std::string> ctestCommands = cmExpandedList(this->CTestCmd);
+ cmList ctestCommands{ this->CTestCmd };
// for each variable/argument do a putenv
for (std::string const& ctestCommand : ctestCommands) {
command = ctestCommand;
diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx
index a1933cccb1..a92f9f28ec 100644
--- a/Source/CTest/cmCTestSubmitCommand.cxx
+++ b/Source/CTest/cmCTestSubmitCommand.cxx
@@ -13,10 +13,10 @@
#include "cmCTest.h"
#include "cmCTestSubmitHandler.h"
#include "cmCommand.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmRange.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -64,14 +64,14 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
cmValue notesFilesVariable =
this->Makefile->GetDefinition("CTEST_NOTES_FILES");
if (notesFilesVariable) {
- std::vector<std::string> notesFiles = cmExpandedList(*notesFilesVariable);
+ cmList notesFiles{ *notesFilesVariable };
this->CTest->GenerateNotesFile(notesFiles);
}
cmValue extraFilesVariable =
this->Makefile->GetDefinition("CTEST_EXTRA_SUBMIT_FILES");
if (extraFilesVariable) {
- std::vector<std::string> extraFiles = cmExpandedList(*extraFilesVariable);
+ cmList extraFiles{ *extraFilesVariable };
if (!this->CTest->SubmitExtraFiles(extraFiles)) {
this->SetError("problem submitting extra files.");
return nullptr;
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 3ff8c8f280..a095e5dc63 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -22,6 +22,7 @@
#include "cmCurl.h"
#include "cmDuration.h"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmState.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
@@ -160,7 +161,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
/* In windows, this will init the winsock stuff */
::curl_global_init(CURL_GLOBAL_ALL);
std::string curlopt(this->CTest->GetCTestConfiguration("CurlOptions"));
- std::vector<std::string> args = cmExpandedList(curlopt);
+ cmList args{ curlopt };
bool verifyPeerOff = false;
bool verifyHostOff = false;
for (std::string const& arg : args) {
@@ -499,7 +500,7 @@ int cmCTestSubmitHandler::HandleCDashUploadFile(std::string const& file,
cmCTestCurl curl(this->CTest);
curl.SetQuiet(this->Quiet);
std::string curlopt(this->CTest->GetCTestConfiguration("CurlOptions"));
- std::vector<std::string> args = cmExpandedList(curlopt);
+ cmList args{ curlopt };
curl.SetCurlOptions(args);
auto submitInactivityTimeout = this->GetSubmitInactivityTimeout();
if (submitInactivityTimeout != 0) {
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index f693ace4b5..3adf33ea84 100644
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -38,6 +38,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGlobalGenerator.h"
#include "cmJSONState.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmState.h"
#include "cmStateSnapshot.h"
@@ -2235,19 +2236,19 @@ bool cmCTestTestHandler::SetTestsProperties(
} else if (key == "ATTACHED_FILES_ON_FAIL"_s) {
cmExpandList(val, rt.AttachOnFail);
} else if (key == "RESOURCE_LOCK"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
rt.LockedResources.insert(lval.begin(), lval.end());
} else if (key == "FIXTURES_SETUP"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
rt.FixturesSetup.insert(lval.begin(), lval.end());
} else if (key == "FIXTURES_CLEANUP"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
rt.FixturesCleanup.insert(lval.begin(), lval.end());
} else if (key == "FIXTURES_REQUIRED"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
rt.FixturesRequired.insert(lval.begin(), lval.end());
} else if (key == "TIMEOUT"_s) {
@@ -2260,12 +2261,12 @@ bool cmCTestTestHandler::SetTestsProperties(
} else if (key == "RUN_SERIAL"_s) {
rt.RunSerial = cmIsOn(val);
} else if (key == "FAIL_REGULAR_EXPRESSION"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
for (std::string const& cr : lval) {
rt.ErrorRegularExpressions.emplace_back(cr, cr);
}
} else if (key == "SKIP_REGULAR_EXPRESSION"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
for (std::string const& cr : lval) {
rt.SkipRegularExpressions.emplace_back(cr, cr);
}
@@ -2292,7 +2293,7 @@ bool cmCTestTestHandler::SetTestsProperties(
} else if (key == "ENVIRONMENT_MODIFICATION"_s) {
cmExpandList(val, rt.EnvironmentModification);
} else if (key == "LABELS"_s) {
- std::vector<std::string> Labels = cmExpandedList(val);
+ cmList Labels{ val };
rt.Labels.insert(rt.Labels.end(), Labels.begin(), Labels.end());
// sort the array
std::sort(rt.Labels.begin(), rt.Labels.end());
@@ -2309,21 +2310,21 @@ bool cmCTestTestHandler::SetTestsProperties(
rt.Measurements[val] = "1";
}
} else if (key == "PASS_REGULAR_EXPRESSION"_s) {
- std::vector<std::string> lval = cmExpandedList(val);
+ cmList lval{ val };
for (std::string const& cr : lval) {
rt.RequiredRegularExpressions.emplace_back(cr, cr);
}
} else if (key == "WORKING_DIRECTORY"_s) {
rt.Directory = val;
} else if (key == "TIMEOUT_AFTER_MATCH"_s) {
- std::vector<std::string> propArgs = cmExpandedList(val);
+ cmList propArgs{ val };
if (propArgs.size() != 2) {
cmCTestLog(this->CTest, WARNING,
"TIMEOUT_AFTER_MATCH expects two arguments, found "
<< propArgs.size() << std::endl);
} else {
rt.AlternateTimeout = cmDuration(atof(propArgs[0].c_str()));
- std::vector<std::string> lval = cmExpandedList(propArgs[1]);
+ cmList lval{ propArgs[1] };
for (std::string const& cr : lval) {
rt.TimeoutRegularExpressions.emplace_back(cr, cr);
}
@@ -2365,7 +2366,7 @@ bool cmCTestTestHandler::SetDirectoryProperties(
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
if (cwd == rt.Directory) {
if (key == "LABELS"_s) {
- std::vector<std::string> DirectoryLabels = cmExpandedList(val);
+ cmList DirectoryLabels{ val };
rt.Labels.insert(rt.Labels.end(), DirectoryLabels.begin(),
DirectoryLabels.end());
diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
index e9ec09ee28..fc5450ef2b 100644
--- a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
+++ b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
@@ -4,7 +4,6 @@
#include <cassert>
#include <utility>
-#include <vector>
#include <cm/memory>
@@ -15,9 +14,9 @@
#include "cmCursesPathWidget.h"
#include "cmCursesStringWidget.h"
#include "cmCursesWidget.h"
+#include "cmList.h"
#include "cmState.h"
#include "cmStateTypes.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -76,7 +75,7 @@ cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(
if (stringsProp) {
auto ow =
cm::make_unique<cmCursesOptionsWidget>(this->EntryWidth, 1, 1, 1);
- for (std::string const& opt : cmExpandedList(*stringsProp)) {
+ for (auto const& opt : cmList{ *stringsProp }) {
ow->AddOption(opt);
}
ow->SetOption(*value);
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index c8eea38b75..c763cc619f 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -55,6 +55,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGlobalGenerator.h"
#include "cmJSONState.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmProcessOutput.h"
#include "cmState.h"
@@ -1468,7 +1469,7 @@ void cmCTest::AddSiteProperties(cmXMLWriter& xml)
ch->GetCMake()->GetState()->GetGlobalProperty("SubProjectLabels");
if (labels) {
xml.StartElement("Labels");
- std::vector<std::string> args = cmExpandedList(*labels);
+ cmList args{ *labels };
for (std::string const& i : args) {
xml.Element("Label", i);
}
@@ -1500,7 +1501,7 @@ std::vector<std::string> cmCTest::GetLabelsForSubprojects()
{
std::string labelsForSubprojects =
this->GetCTestConfiguration("LabelsForSubprojects");
- std::vector<std::string> subprojects = cmExpandedList(labelsForSubprojects);
+ cmList subprojects{ labelsForSubprojects };
// sort the array
std::sort(subprojects.begin(), subprojects.end());
@@ -1508,7 +1509,7 @@ std::vector<std::string> cmCTest::GetLabelsForSubprojects()
auto new_end = std::unique(subprojects.begin(), subprojects.end());
subprojects.erase(new_end, subprojects.end());
- return subprojects;
+ return std::move(subprojects.data());
}
void cmCTest::EndXML(cmXMLWriter& xml)
diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx
index b9d1f66d2a..d95dcc44ce 100644
--- a/Source/cmCacheManager.cxx
+++ b/Source/cmCacheManager.cxx
@@ -12,6 +12,7 @@
#include "cmsys/Glob.hxx"
#include "cmGeneratedFileStream.h"
+#include "cmList.h"
#include "cmMessageType.h"
#include "cmMessenger.h"
#include "cmState.h"
@@ -531,15 +532,11 @@ void cmCacheManager::AddCacheEntry(const std::string& key, cmValue value,
// make sure we only use unix style paths
if (type == cmStateEnums::FILEPATH || type == cmStateEnums::PATH) {
if (e.Value.find(';') != std::string::npos) {
- std::vector<std::string> paths = cmExpandedList(e.Value);
- const char* sep = "";
- e.Value = "";
+ cmList paths{ e.Value };
for (std::string& i : paths) {
cmSystemTools::ConvertToUnixSlashes(i);
- e.Value += sep;
- e.Value += i;
- sep = ";";
}
+ e.Value = paths.to_string();
} else {
cmSystemTools::ConvertToUnixSlashes(e.Value);
}
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx
index f6fdd48969..1cb62b39d8 100644
--- a/Source/cmCommonTargetGenerator.cxx
+++ b/Source/cmCommonTargetGenerator.cxx
@@ -15,6 +15,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalCommonGenerator.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalCommonGenerator.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -303,8 +304,7 @@ std::string cmCommonTargetGenerator::GetLinkerLauncher(
*launcherProp, this->LocalCommonGenerator, config, this->GeneratorTarget,
&dagChecker, this->GeneratorTarget, lang);
// Convert ;-delimited list to single string
- std::vector<std::string> args =
- cmExpandedList(evaluatedLinklauncher, true);
+ cmList args{ evaluatedLinklauncher, cmList::EmptyElements::Yes };
if (!args.empty()) {
args[0] = this->LocalCommonGenerator->ConvertToOutputFormat(
args[0], cmOutputConverter::SHELL);
diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx
index 5f408d0c65..f51a1c895c 100644
--- a/Source/cmComputeLinkDepends.cxx
+++ b/Source/cmComputeLinkDepends.cxx
@@ -20,6 +20,7 @@
#include "cmGeneratorExpressionDAGChecker.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -627,7 +628,7 @@ void cmComputeLinkDepends::AddVarLinkEntries(size_t depender_index,
// This is called to add the dependencies named by
// <item>_LIB_DEPENDS. The variable contains a semicolon-separated
// list. The list contains link-type;item pairs and just items.
- std::vector<std::string> deplist = cmExpandedList(value);
+ cmList deplist{ value };
// Look for entries meant for this configuration.
std::vector<cmLinkItem> actual_libs;
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index a93477b924..6a5b4cc6a9 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -15,6 +15,7 @@
#include "cmComputeLinkDepends.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -858,8 +859,8 @@ bool cmComputeLinkInformation::AddLibraryFeature(std::string const& feature)
return false;
}
- auto items = cmExpandListWithBacktrace(*langFeature,
- this->Target->GetBacktrace(), true);
+ auto items = cmExpandListWithBacktrace(
+ *langFeature, this->Target->GetBacktrace(), cmList::EmptyElements::Yes);
if ((items.size() == 1 && !IsValidFeatureFormat(items.front().Value)) ||
(items.size() == 3 && !IsValidFeatureFormat(items[1].Value))) {
@@ -1016,8 +1017,8 @@ cmComputeLinkInformation::GetGroupFeature(std::string const& feature)
.first->second;
}
- auto items = cmExpandListWithBacktrace(*langFeature,
- this->Target->GetBacktrace(), true);
+ auto items = cmExpandListWithBacktrace(
+ *langFeature, this->Target->GetBacktrace(), cmList::EmptyElements::Yes);
// replace LINKER: pattern
this->Target->ResolveLinkerWrapper(items, this->LinkLanguage, true);
@@ -1072,8 +1073,8 @@ void cmComputeLinkInformation::AddRuntimeLinkLibrary(std::string const& lang)
}
if (cmValue runtimeLinkOptions = this->Makefile->GetDefinition(cmStrCat(
"CMAKE_", lang, "_RUNTIME_LIBRARY_LINK_OPTIONS_", runtimeLibrary))) {
- std::vector<std::string> libsVec = cmExpandedList(*runtimeLinkOptions);
- for (std::string const& i : libsVec) {
+ cmList libs{ *runtimeLinkOptions };
+ for (auto const& i : libs) {
if (!cm::contains(this->ImplicitLinkLibs, i)) {
this->AddItem({ i });
}
@@ -1087,8 +1088,8 @@ void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang)
// linker language.
std::string libVar = cmStrCat("CMAKE_", lang, "_IMPLICIT_LINK_LIBRARIES");
if (cmValue libs = this->Makefile->GetDefinition(libVar)) {
- std::vector<std::string> libsVec = cmExpandedList(*libs);
- for (std::string const& i : libsVec) {
+ cmList libsList{ *libs };
+ for (auto const& i : libsList) {
if (!cm::contains(this->ImplicitLinkLibs, i)) {
this->AddItem({ i });
}
@@ -1099,8 +1100,8 @@ void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang)
// implied by the linker language.
std::string dirVar = cmStrCat("CMAKE_", lang, "_IMPLICIT_LINK_DIRECTORIES");
if (cmValue dirs = this->Makefile->GetDefinition(dirVar)) {
- std::vector<std::string> dirsVec = cmExpandedList(*dirs);
- this->OrderLinkerSearchPath->AddLanguageDirectories(dirsVec);
+ cmList dirsList{ *dirs };
+ this->OrderLinkerSearchPath->AddLanguageDirectories(dirsList);
}
}
@@ -1370,15 +1371,15 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
LinkUnknown);
if (cmValue linkSuffixes =
mf->GetDefinition("CMAKE_EXTRA_LINK_EXTENSIONS")) {
- std::vector<std::string> linkSuffixVec = cmExpandedList(*linkSuffixes);
- for (std::string const& i : linkSuffixVec) {
+ cmList linkSuffixList{ *linkSuffixes };
+ for (auto const& i : linkSuffixList) {
this->AddLinkExtension(i, LinkUnknown);
}
}
if (cmValue sharedSuffixes =
mf->GetDefinition("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES")) {
- std::vector<std::string> sharedSuffixVec = cmExpandedList(*sharedSuffixes);
- for (std::string const& i : sharedSuffixVec) {
+ cmList sharedSuffixList{ *sharedSuffixes };
+ for (std::string const& i : sharedSuffixList) {
this->AddLinkExtension(i, LinkShared);
}
}
@@ -2279,7 +2280,7 @@ static void cmCLI_ExpandListUnique(std::string const& str,
std::vector<std::string>& out,
std::set<std::string>& emitted)
{
- std::vector<std::string> tmp = cmExpandedList(str);
+ cmList tmp{ str };
for (std::string const& i : tmp) {
if (emitted.insert(i).second) {
out.push_back(i);
diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx
index 5de012a7fa..288e107d0a 100644
--- a/Source/cmConditionEvaluator.cxx
+++ b/Source/cmConditionEvaluator.cxx
@@ -18,6 +18,7 @@
#include "cmCMakePath.h"
#include "cmExpandedCommandArgument.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmState.h"
@@ -764,7 +765,9 @@ bool cmConditionEvaluator::HandleLevel2(cmArgumentList& newArgs,
cmValue rhs = this->Makefile.GetDefinition(args.nextnext->GetValue());
newArgs.ReduceTwoArgs(
- rhs && cm::contains(cmExpandedList(*rhs, true), *lhs), args);
+ rhs &&
+ cm::contains(cmList{ *rhs, cmList::EmptyElements::Yes }, *lhs),
+ args);
}
else if (this->Policy57Status == cmPolicies::WARN) {
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index 3149ccfa9c..02ee9e2090 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -20,6 +20,7 @@
#include "cmConfigureLog.h"
#include "cmExportTryCompileFileGenerator.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmOutputConverter.h"
@@ -1024,7 +1025,7 @@ cm::optional<cmTryCompileResult> cmCoreTryCompile::TryCompileCode(
if (cmValue varListStr = this->Makefile->GetDefinition(
kCMAKE_TRY_COMPILE_PLATFORM_VARIABLES)) {
- std::vector<std::string> varList = cmExpandedList(*varListStr);
+ cmList varList{ *varListStr };
vars.insert(varList.begin(), varList.end());
}
diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx
index 14c22e3a45..7623ccfd18 100644
--- a/Source/cmCustomCommandGenerator.cxx
+++ b/Source/cmCustomCommandGenerator.cxx
@@ -17,6 +17,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmStateTypes.h"
@@ -116,7 +117,7 @@ std::vector<std::string> EvaluateDepends(std::vector<std::string> const& paths,
/*outputConfig=*/outputConfig,
/*commandConfig=*/commandConfig,
/*target=*/nullptr);
- cm::append(depends, cmExpandedList(ep));
+ cm::append(depends, cmList{ ep });
}
for (std::string& p : depends) {
if (cmSystemTools::FileIsFullPath(p)) {
@@ -196,7 +197,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(
clarg, ge, this->LG, useOutputConfig, this->OutputConfig,
this->CommandConfig, target, &this->Utilities);
if (this->CC->GetCommandExpandLists()) {
- cm::append(argv, cmExpandedList(parsed_arg));
+ cm::append(argv, cmList{ parsed_arg });
} else {
argv.push_back(std::move(parsed_arg));
}
diff --git a/Source/cmExportBuildAndroidMKGenerator.cxx b/Source/cmExportBuildAndroidMKGenerator.cxx
index 5d0b208931..5e7008b957 100644
--- a/Source/cmExportBuildAndroidMKGenerator.cxx
+++ b/Source/cmExportBuildAndroidMKGenerator.cxx
@@ -10,6 +10,7 @@
#include "cmGeneratorTarget.h"
#include "cmLinkItem.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmPolicies.h"
@@ -148,7 +149,7 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
}
} else if (property.first == "INTERFACE_INCLUDE_DIRECTORIES") {
std::string includes = property.second;
- std::vector<std::string> includeList = cmExpandedList(includes);
+ cmList includeList{ includes };
os << "LOCAL_EXPORT_C_INCLUDES := ";
std::string end;
for (std::string const& i : includeList) {
@@ -158,9 +159,8 @@ void cmExportBuildAndroidMKGenerator::GenerateInterfaceProperties(
os << "\n";
} else if (property.first == "INTERFACE_LINK_OPTIONS") {
os << "LOCAL_EXPORT_LDFLAGS := ";
- std::vector<std::string> linkFlagsList =
- cmExpandedList(property.second);
- os << cmJoin(linkFlagsList, " ") << "\n";
+ cmList linkFlagsList{ property.second };
+ os << linkFlagsList.join(" ") << "\n";
} else {
os << "# " << property.first << " " << (property.second) << "\n";
}
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index 511b28d393..2ad2b472ea 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -17,6 +17,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGeneratorTarget.h"
#include "cmLinkItem.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -507,7 +508,7 @@ static void getPropertyContents(cmGeneratorTarget const* tgt,
if (!p) {
return;
}
- std::vector<std::string> content = cmExpandedList(*p);
+ cmList content{ *p };
ifaceProperties.insert(content.begin(), content.end());
}
@@ -1245,7 +1246,7 @@ bool cmExportFileGenerator::PopulateExportProperties(
const auto& targetProperties = gte->Target->GetProperties();
if (cmValue exportProperties =
targetProperties.GetPropertyValue("EXPORT_PROPERTIES")) {
- for (auto& prop : cmExpandedList(*exportProperties)) {
+ for (auto& prop : cmList{ *exportProperties }) {
/* Black list reserved properties */
if (cmHasLiteralPrefix(prop, "IMPORTED_") ||
cmHasLiteralPrefix(prop, "INTERFACE_")) {
diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx
index c6ebad5c2d..f30c3c3ba4 100644
--- a/Source/cmExportTryCompileFileGenerator.cxx
+++ b/Source/cmExportTryCompileFileGenerator.cxx
@@ -12,6 +12,7 @@
#include "cmGeneratorExpressionDAGChecker.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -126,7 +127,7 @@ void cmExportTryCompileFileGenerator::PopulateProperties(
std::string evalResult =
this->FindTargets(p, target, std::string(), emitted);
- std::vector<std::string> depends = cmExpandedList(evalResult);
+ cmList depends{ evalResult };
for (std::string const& li : depends) {
cmGeneratorTarget* tgt =
target->GetLocalGenerator()->FindGeneratorTargetToUse(li);
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx
index e9e2921316..8d7f33e7ef 100644
--- a/Source/cmExtraCodeBlocksGenerator.cxx
+++ b/Source/cmExtraCodeBlocksGenerator.cxx
@@ -14,6 +14,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmRange.h"
@@ -567,13 +568,13 @@ void cmExtraCodeBlocksGenerator::AppendTarget(
std::string systemIncludeDirs = makefile->GetSafeDefinition(
"CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS");
if (!systemIncludeDirs.empty()) {
- cm::append(allIncludeDirs, cmExpandedList(systemIncludeDirs));
+ cm::append(allIncludeDirs, cmList{ systemIncludeDirs });
}
systemIncludeDirs = makefile->GetSafeDefinition(
"CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS");
if (!systemIncludeDirs.empty()) {
- cm::append(allIncludeDirs, cmExpandedList(systemIncludeDirs));
+ cm::append(allIncludeDirs, cmList{ systemIncludeDirs });
}
auto end = cmRemoveDuplicates(allIncludeDirs);
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index 6201889f22..c7ce5b0676 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -16,6 +16,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -418,7 +419,7 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
if (cmValue extraNaturesProp =
mf->GetState()->GetGlobalProperty("ECLIPSE_EXTRA_NATURES")) {
- std::vector<std::string> extraNatures = cmExpandedList(*extraNaturesProp);
+ cmList extraNatures{ *extraNaturesProp };
for (std::string const& n : extraNatures) {
xml.Element("nature", n);
}
@@ -798,7 +799,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
mf->GetDefinition("CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS");
if (this->CEnabled && cDefs) {
// Expand the list.
- std::vector<std::string> defs = cmExpandedList(*cDefs, true);
+ cmList defs{ *cDefs, cmList::EmptyElements::Yes };
// the list must contain only definition-value pairs:
if ((defs.size() % 2) == 0) {
@@ -830,7 +831,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
mf->GetDefinition("CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS");
if (this->CXXEnabled && cxxDefs) {
// Expand the list.
- std::vector<std::string> defs = cmExpandedList(*cxxDefs, true);
+ cmList defs{ *cxxDefs, cmList::EmptyElements::Yes };
// the list must contain only definition-value pairs:
if ((defs.size() % 2) == 0) {
@@ -879,14 +880,14 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
if (this->CEnabled && !compiler.empty()) {
std::string systemIncludeDirs =
mf->GetSafeDefinition("CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS");
- std::vector<std::string> dirs = cmExpandedList(systemIncludeDirs);
+ cmList dirs{ systemIncludeDirs };
this->AppendIncludeDirectories(xml, dirs, emitted);
}
compiler = mf->GetSafeDefinition("CMAKE_CXX_COMPILER");
if (this->CXXEnabled && !compiler.empty()) {
std::string systemIncludeDirs =
mf->GetSafeDefinition("CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS");
- std::vector<std::string> dirs = cmExpandedList(systemIncludeDirs);
+ cmList dirs{ systemIncludeDirs };
this->AppendIncludeDirectories(xml, dirs, emitted);
}
diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx
index 33901ac594..205a691f21 100644
--- a/Source/cmExtraSublimeTextGenerator.cxx
+++ b/Source/cmExtraSublimeTextGenerator.cxx
@@ -14,6 +14,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -138,7 +139,7 @@ void cmExtraSublimeTextGenerator::CreateNewProjectFile(
// End of build_systems
fout << "\n\t]";
std::string systemName = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME");
- std::vector<std::string> tokens = cmExpandedList(this->EnvSettings);
+ cmList tokens{ this->EnvSettings };
if (!this->EnvSettings.empty()) {
fout << ",";
diff --git a/Source/cmFileCopier.cxx b/Source/cmFileCopier.cxx
index ef55abfd14..663bddcece 100644
--- a/Source/cmFileCopier.cxx
+++ b/Source/cmFileCopier.cxx
@@ -9,6 +9,7 @@
#include "cmExecutionStatus.h"
#include "cmFSPermissions.h"
#include "cmFileTimes.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
@@ -169,8 +170,7 @@ bool cmFileCopier::GetDefaultDirectoryPermissions(mode_t** mode)
cmValue default_dir_install_permissions = this->Makefile->GetDefinition(
"CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS");
if (cmNonempty(default_dir_install_permissions)) {
- std::vector<std::string> items =
- cmExpandedList(*default_dir_install_permissions);
+ cmList items{ *default_dir_install_permissions };
for (const auto& arg : items) {
if (!this->CheckPermissions(arg, **mode)) {
this->Status.SetError(
diff --git a/Source/cmFileSet.cxx b/Source/cmFileSet.cxx
index b96ba6e886..48a2570d56 100644
--- a/Source/cmFileSet.cxx
+++ b/Source/cmFileSet.cxx
@@ -12,6 +12,7 @@
#include "cmsys/RegularExpression.hxx"
#include "cmGeneratorExpression.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -113,7 +114,7 @@ cmFileSet::CompileFileEntries() const
std::vector<std::unique_ptr<cmCompiledGeneratorExpression>> result;
for (auto const& entry : this->FileEntries) {
- for (auto const& ex : cmExpandedList(entry.Value)) {
+ for (auto const& ex : cmList{ entry.Value }) {
cmGeneratorExpression ge(this->CMakeInstance, entry.Backtrace);
auto cge = ge.Parse(ex);
result.push_back(std::move(cge));
@@ -129,7 +130,7 @@ cmFileSet::CompileDirectoryEntries() const
std::vector<std::unique_ptr<cmCompiledGeneratorExpression>> result;
for (auto const& entry : this->DirectoryEntries) {
- for (auto const& ex : cmExpandedList(entry.Value)) {
+ for (auto const& ex : cmList{ entry.Value }) {
cmGeneratorExpression ge(this->CMakeInstance, entry.Backtrace);
auto cge = ge.Parse(ex);
result.push_back(std::move(cge));
@@ -148,7 +149,7 @@ std::vector<std::string> cmFileSet::EvaluateDirectoryEntries(
std::vector<std::string> result;
for (auto const& cge : cges) {
auto entry = cge->Evaluate(lg, config, target, dagChecker);
- auto dirs = cmExpandedList(entry);
+ cmList dirs{ entry };
for (std::string dir : dirs) {
if (!cmSystemTools::FileIsFullPath(dir)) {
dir = cmStrCat(lg->GetCurrentSourceDirectory(), '/', dir);
@@ -184,7 +185,7 @@ void cmFileSet::EvaluateFileEntry(
cmGeneratorExpressionDAGChecker* dagChecker) const
{
auto files = cge->Evaluate(lg, config, target, dagChecker);
- for (std::string file : cmExpandedList(files)) {
+ for (std::string file : cmList{ files }) {
if (!cmSystemTools::FileIsFullPath(file)) {
file = cmStrCat(lg->GetCurrentSourceDirectory(), '/', file);
}
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index 4df81d5773..929c6c1c82 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -15,6 +15,7 @@
#include "cmCMakePath.h"
#include "cmExecutionStatus.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -154,7 +155,7 @@ bool cmFindBase::ParseArguments(std::vector<std::string> const& argsIn)
}
// ensure a macro is not specified as validator
const auto& validatorName = args[j];
- auto macros = cmExpandedList(this->Makefile->GetProperty("MACROS"));
+ cmList macros{ this->Makefile->GetProperty("MACROS") };
if (std::find_if(macros.begin(), macros.end(),
[&validatorName](const std::string& item) {
return cmSystemTools::Strucmp(validatorName.c_str(),
@@ -403,7 +404,7 @@ void cmFindBase::FillCMakeSystemVariablePath()
this->Makefile->GetDefinition("CMAKE_SYSTEM_PREFIX_PATH");
// remove entries from CMAKE_SYSTEM_PREFIX_PATH
- std::vector<std::string> expanded = cmExpandedList(*prefix_paths);
+ cmList expanded{ *prefix_paths };
install_entry.remove_self(expanded);
staging_entry.remove_self(expanded);
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index b1029e62c8..656703c083 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -23,6 +23,7 @@
#include "cmAlgorithms.h"
#include "cmDependencyProvider.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -2338,7 +2339,7 @@ void cmFindPackageCommand::FillPrefixesCMakeSystemVariable()
cmValue prefix_paths =
this->Makefile->GetDefinition("CMAKE_SYSTEM_PREFIX_PATH");
// remove entry from CMAKE_SYSTEM_PREFIX_PATH
- std::vector<std::string> expanded = cmExpandedList(*prefix_paths);
+ cmList expanded{ *prefix_paths };
long count = 0;
for (const auto& path : expanded) {
bool const to_add =
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 727931c579..9dcbc39b39 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -708,9 +708,9 @@ static const struct PathNode : public cmGeneratorExpressionNode
static auto processList =
[](std::string const& arg,
std::function<void(std::string&)> transform) -> std::string {
- auto list = cmExpandedList(arg);
+ cmList list{ arg };
std::for_each(list.begin(), list.end(), std::move(transform));
- return cmJoin(list, ";");
+ return list.to_string();
};
static std::unordered_map<
@@ -4363,7 +4363,7 @@ static const struct ShellPathNode : public cmGeneratorExpressionNode
const GeneratorExpressionContent* content,
cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override
{
- std::vector<std::string> listIn = cmExpandedList(parameters.front());
+ cmList listIn{ parameters.front() };
if (listIn.empty()) {
reportError(context, content->GetOriginalExpression(),
"\"\" is not an absolute path.");
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 90cddb56b2..db3d7e6e21 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -36,6 +36,7 @@
#include "cmGeneratorExpressionDAGChecker.h"
#include "cmGeneratorExpressionNode.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -1634,20 +1635,20 @@ void AddFileSetEntries(cmGeneratorTarget const* headTarget,
EvaluatedTargetPropertyEntries& entries)
{
for (auto const& entry : headTarget->Target->GetHeaderSetsEntries()) {
- for (auto const& name : cmExpandedList(entry.Value)) {
+ for (auto const& name : cmList{ entry.Value }) {
auto const* headerSet = headTarget->Target->GetFileSet(name);
addFileSetEntry(headTarget, config, dagChecker, headerSet, entries);
}
}
for (auto const& entry : headTarget->Target->GetCxxModuleSetsEntries()) {
- for (auto const& name : cmExpandedList(entry.Value)) {
+ for (auto const& name : cmList{ entry.Value }) {
auto const* cxxModuleSet = headTarget->Target->GetFileSet(name);
addFileSetEntry(headTarget, config, dagChecker, cxxModuleSet, entries);
}
}
for (auto const& entry :
headTarget->Target->GetCxxModuleHeaderSetsEntries()) {
- for (auto const& name : cmExpandedList(entry.Value)) {
+ for (auto const& name : cmList{ entry.Value }) {
auto const* cxxModuleHeaderSet = headTarget->Target->GetFileSet(name);
addFileSetEntry(headTarget, config, dagChecker, cxxModuleHeaderSet,
entries);
@@ -1740,8 +1741,8 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetSourceFilePaths(
cmBTStringRange sourceEntries = this->Target->GetSourceEntries();
for (auto const& entry : sourceEntries) {
- std::vector<std::string> items = cmExpandedList(entry.Value);
- for (std::string const& item : items) {
+ cmList items{ entry.Value };
+ for (auto const& item : items) {
if (cmHasLiteralPrefix(item, "$<TARGET_OBJECTS:") &&
item.back() == '>') {
continue;
@@ -3105,8 +3106,8 @@ void cmTargetTraceDependencies::Trace()
// Queue dependencies added explicitly by the user.
if (cmValue additionalDeps = sf->GetProperty("OBJECT_DEPENDS")) {
- std::vector<std::string> objDeps = cmExpandedList(*additionalDeps);
- for (std::string& objDep : objDeps) {
+ cmList objDeps{ *additionalDeps };
+ for (auto& objDep : objDeps) {
if (cmSystemTools::FileIsFullPath(objDep)) {
objDep = cmSystemTools::CollapseFullPath(objDep);
}
@@ -4606,7 +4607,7 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkOptions(
// wrap host link options
const std::string wrapper(this->Makefile->GetSafeDefinition(
"CMAKE_" + language + "_DEVICE_COMPILER_WRAPPER_FLAG"));
- std::vector<std::string> wrapperFlag = cmExpandedList(wrapper);
+ cmList wrapperFlag{ wrapper };
const std::string wrapperSep(this->Makefile->GetSafeDefinition(
"CMAKE_" + language + "_DEVICE_COMPILER_WRAPPER_FLAG_SEP"));
bool concatFlagAndArgs = true;
@@ -4665,7 +4666,7 @@ std::vector<BT<std::string>>& cmGeneratorTarget::ResolveLinkerWrapper(
"CMAKE_" + language +
(this->IsDeviceLink() ? "_DEVICE_LINKER_WRAPPER_FLAG"
: "_LINKER_WRAPPER_FLAG")));
- std::vector<std::string> wrapperFlag = cmExpandedList(wrapper);
+ cmList wrapperFlag{ wrapper };
const std::string wrapperSep(this->Makefile->GetSafeDefinition(
"CMAKE_" + language +
(this->IsDeviceLink() ? "_DEVICE_LINKER_WRAPPER_FLAG_SEP"
@@ -4911,7 +4912,7 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkDepends(
EvaluatedTargetPropertyEntries entries;
if (cmValue linkDepends = this->GetProperty("LINK_DEPENDS")) {
- std::vector<std::string> depends = cmExpandedList(*linkDepends);
+ cmList depends{ *linkDepends };
for (const auto& depend : depends) {
std::unique_ptr<TargetPropertyEntry> entry = CreateTargetPropertyEntry(
*this->LocalGenerator->GetCMakeInstance(), depend);
@@ -5590,8 +5591,8 @@ void cmGeneratorTarget::ConstructSourceFileFlags() const
// Process public headers to mark the source files.
if (cmValue files = this->GetProperty("PUBLIC_HEADER")) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
- for (std::string const& relFile : relFiles) {
+ cmList relFiles{ *files };
+ for (auto const& relFile : relFiles) {
if (cmSourceFile* sf = this->Makefile->GetSource(relFile)) {
SourceFileFlags& flags = this->SourceFlagsMap[sf];
flags.MacFolder = "Headers";
@@ -5603,8 +5604,8 @@ void cmGeneratorTarget::ConstructSourceFileFlags() const
// Process private headers after public headers so that they take
// precedence if a file is listed in both.
if (cmValue files = this->GetProperty("PRIVATE_HEADER")) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
- for (std::string const& relFile : relFiles) {
+ cmList relFiles{ *files };
+ for (auto const& relFile : relFiles) {
if (cmSourceFile* sf = this->Makefile->GetSource(relFile)) {
SourceFileFlags& flags = this->SourceFlagsMap[sf];
flags.MacFolder = "PrivateHeaders";
@@ -5615,8 +5616,8 @@ void cmGeneratorTarget::ConstructSourceFileFlags() const
// Mark sources listed as resources.
if (cmValue files = this->GetProperty("RESOURCE")) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
- for (std::string const& relFile : relFiles) {
+ cmList relFiles{ *files };
+ for (auto const& relFile : relFiles) {
if (cmSourceFile* sf = this->Makefile->GetSource(relFile)) {
SourceFileFlags& flags = this->SourceFlagsMap[sf];
flags.MacFolder = "";
@@ -5757,7 +5758,7 @@ void checkPropertyConsistency(cmGeneratorTarget const* depender,
return;
}
- std::vector<std::string> props = cmExpandedList(*prop);
+ cmList props{ *prop };
std::string pdir =
cmStrCat(cmSystemTools::GetCMakeRoot(), "/Help/prop_tgt/");
@@ -6799,10 +6800,10 @@ void cmGeneratorTarget::ExpandLinkItems(
entry.Backtrace);
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(entry.Value);
cge->SetEvaluateForBuildsystem(true);
- std::vector<std::string> libs = cmExpandedList(
- cge->Evaluate(this->LocalGenerator, config, headTarget, &dagChecker,
- this, headTarget->LinkerLanguage));
- for (std::string const& lib : libs) {
+ cmList libs{ cge->Evaluate(this->LocalGenerator, config, headTarget,
+ &dagChecker, this,
+ headTarget->LinkerLanguage) };
+ for (auto const& lib : libs) {
if (cm::optional<cmLinkItem> maybeItem = this->LookupLinkItem(
lib, cge->GetBacktrace(), &scope,
field == LinkInterfaceField::Libraries ? LookupSelf::No
@@ -7466,10 +7467,10 @@ std::vector<ValueType> computeImplicitLanguageTargets(
currentTarget->GetRuntimeLinkLibrary(lang, config);
if (cmValue runtimeLinkOptions = currentTarget->Makefile->GetDefinition(
"CMAKE_" + lang + "_RUNTIME_LIBRARIES_" + runtimeLibrary)) {
- std::vector<std::string> libsVec = cmExpandedList(*runtimeLinkOptions);
- result.reserve(libsVec.size());
+ cmList libsList{ *runtimeLinkOptions };
+ result.reserve(libsList.size());
- for (std::string const& i : libsVec) {
+ for (auto const& i : libsList) {
cmGeneratorTarget::TargetOrString resolved =
currentTarget->ResolveTargetReference(i, lg);
if (resolved.Target) {
@@ -7550,9 +7551,9 @@ const cmLinkInterface* cmGeneratorTarget::GetImportLinkInterface(
this->ExpandLinkItems(info->LibrariesProp, cmMakeRange(info->Libraries),
config, headTarget, interfaceFor,
LinkInterfaceField::Libraries, iface);
- std::vector<std::string> deps = cmExpandedList(info->SharedDeps);
+ cmList deps{ info->SharedDeps };
LookupLinkItemScope scope{ this->LocalGenerator };
- for (std::string const& dep : deps) {
+ for (auto const& dep : deps) {
if (cm::optional<cmLinkItem> maybeItem = this->LookupLinkItem(
dep, cmListFileBacktrace(), &scope, LookupSelf::No)) {
iface.SharedDeps.emplace_back(std::move(*maybeItem));
@@ -7873,8 +7874,8 @@ void cmGeneratorTarget::GetObjectLibrariesCMP0026(
// behavior of CMP0024 and CMP0026 only.
cmBTStringRange rng = this->Target->GetSourceEntries();
for (auto const& entry : rng) {
- std::vector<std::string> files = cmExpandedList(entry.Value);
- for (std::string const& li : files) {
+ cmList files{ entry.Value };
+ for (auto const& li : files) {
if (cmHasLiteralPrefix(li, "$<TARGET_OBJECTS:") && li.back() == '>') {
std::string objLibName = li.substr(17, li.size() - 18);
@@ -8636,7 +8637,7 @@ bool cmGeneratorTarget::AddHeaderSetVerification()
const bool all = verifyValue.IsEmpty();
std::set<std::string> verifySet;
if (!all) {
- auto verifyList = cmExpandedList(verifyValue);
+ cmList verifyList{ verifyValue };
verifySet.insert(verifyList.begin(), verifyList.end());
}
@@ -8649,7 +8650,7 @@ bool cmGeneratorTarget::AddHeaderSetVerification()
std::set<cmFileSet*> fileSets;
for (auto const& entry : interfaceFileSetEntries) {
- for (auto const& name : cmExpandedList(entry.Value)) {
+ for (auto const& name : cmList{ entry.Value }) {
if (all || verifySet.count(name)) {
fileSets.insert(this->Target->GetFileSet(name));
verifySet.erase(name);
diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx
index 8471dfe615..a1e0650d20 100644
--- a/Source/cmGhsMultiTargetGenerator.cxx
+++ b/Source/cmGhsMultiTargetGenerator.cxx
@@ -17,6 +17,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGhsMultiGenerator.h"
#include "cmLinkLineComputer.h" // IWYU pragma: keep
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmLocalGhsMultiGenerator.h"
#include "cmMakefile.h"
@@ -484,7 +485,7 @@ void cmGhsMultiTargetGenerator::WriteSourceProperty(
{
cmValue prop = sf->GetProperty(propName);
if (prop) {
- std::vector<std::string> list = cmExpandedList(*prop);
+ cmList list{ *prop };
for (const std::string& p : list) {
fout << " " << propFlag << p << '\n';
}
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 3563a1a17d..d0a0fdf992 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -42,6 +42,7 @@
#include "cmInstallGenerator.h"
#include "cmInstallRuntimeDependencySet.h"
#include "cmLinkLineComputer.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMSVC60LinkLineComputer.h"
#include "cmMakefile.h"
@@ -670,7 +671,7 @@ void cmGlobalGenerator::EnableLanguage(
mf->GetState()->SetInTopLevelIncludes(true);
std::string includes =
mf->GetSafeDefinition("CMAKE_PROJECT_TOP_LEVEL_INCLUDES");
- std::vector<std::string> includesList = cmExpandedList(includes);
+ cmList includesList{ includes };
for (std::string const& setupFile : includesList) {
std::string absSetupFile = cmSystemTools::CollapseFullPath(
setupFile, mf->GetCurrentSourceDirectory());
@@ -1234,7 +1235,7 @@ void cmGlobalGenerator::SetLanguageEnabledMaps(const std::string& l,
std::string ignoreExtensionsVar =
std::string("CMAKE_") + std::string(l) + std::string("_IGNORE_EXTENSIONS");
std::string ignoreExts = mf->GetSafeDefinition(ignoreExtensionsVar);
- std::vector<std::string> extensionList = cmExpandedList(ignoreExts);
+ cmList extensionList{ ignoreExts };
for (std::string const& i : extensionList) {
this->IgnoreExtensions[i] = true;
}
@@ -1246,7 +1247,7 @@ void cmGlobalGenerator::FillExtensionToLanguageMap(const std::string& l,
std::string extensionsVar = std::string("CMAKE_") + std::string(l) +
std::string("_SOURCE_FILE_EXTENSIONS");
const std::string& exts = mf->GetSafeDefinition(extensionsVar);
- std::vector<std::string> extensionList = cmExpandedList(exts);
+ cmList extensionList{ exts };
for (std::string const& i : extensionList) {
this->ExtensionToLanguage[i] = l;
}
@@ -1887,10 +1888,9 @@ void cmGlobalGenerator::FinalizeTargetConfiguration()
"CMAKE_" + li + "_STANDARD_INCLUDE_DIRECTORIES";
std::string const& standardIncludesStr =
mf->GetSafeDefinition(standardIncludesVar);
- std::vector<std::string> standardIncludesVec =
- cmExpandedList(standardIncludesStr);
- standardIncludesSet.insert(standardIncludesVec.begin(),
- standardIncludesVec.end());
+ cmList standardIncludesList{ standardIncludesStr };
+ standardIncludesSet.insert(standardIncludesList.begin(),
+ standardIncludesList.end());
}
mf->AddSystemIncludeDirectories(standardIncludesSet);
}
diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx
index b1f2b4a393..578e805332 100644
--- a/Source/cmGlobalGhsMultiGenerator.cxx
+++ b/Source/cmGlobalGhsMultiGenerator.cxx
@@ -18,6 +18,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGeneratorTarget.h"
#include "cmGhsMultiGpj.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmLocalGhsMultiGenerator.h"
#include "cmMakefile.h"
@@ -531,7 +532,7 @@ void cmGlobalGhsMultiGenerator::WriteMacros(std::ostream& fout,
fout << "macro PROJ_NAME=" << root->GetProjectName() << '\n';
cmValue ghsGpjMacros = root->GetMakefile()->GetDefinition("GHS_GPJ_MACROS");
if (ghsGpjMacros) {
- std::vector<std::string> expandedList = cmExpandedList(*ghsGpjMacros);
+ cmList expandedList{ *ghsGpjMacros };
for (std::string const& arg : expandedList) {
fout << "macro " << arg << '\n';
}
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 5de3a55939..694698e559 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -17,6 +17,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmLocalVisualStudio7Generator.h"
#include "cmMakefile.h"
@@ -580,7 +581,7 @@ void cmGlobalVisualStudio7Generator::WriteSLNGlobalSections(
}
fout << "\tGlobalSection(" << name << ") = " << sectionType << "\n";
cmValue p = root->GetMakefile()->GetProperty(it);
- std::vector<std::string> keyValuePairs = cmExpandedList(p ? *p : "");
+ cmList keyValuePairs{ *p };
for (std::string const& itPair : keyValuePairs) {
const std::string::size_type posEqual = itPair.find('=');
if (posEqual != std::string::npos) {
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 139635797f..1328f4b8df 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -30,6 +30,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGeneratorFactory.h"
#include "cmLinkItem.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmLocalXCodeGenerator.h"
@@ -1027,7 +1028,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile(
cmValue extraFileAttributes = sf->GetProperty("XCODE_FILE_ATTRIBUTES");
if (extraFileAttributes) {
// Expand the list of attributes.
- std::vector<std::string> attributes = cmExpandedList(*extraFileAttributes);
+ cmList attributes{ *extraFileAttributes };
// Store the attributes.
for (const auto& attribute : attributes) {
@@ -1171,7 +1172,7 @@ template <class T>
std::string GetTargetObjectDirArch(T const& target,
const std::string& defaultVal)
{
- auto archs = cmExpandedList(target.GetSafeProperty("OSX_ARCHITECTURES"));
+ cmList archs{ target.GetSafeProperty("OSX_ARCHITECTURES") };
if (archs.size() > 1) {
return "$(CURRENT_ARCH)";
} else if (archs.size() == 1) {
@@ -3127,8 +3128,8 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateUtilityTarget(
std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
cmGeneratorTarget* gtgt)
{
- std::vector<std::string> const configVector = cmExpandedList(
- this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES"));
+ cmList const configList{ this->CurrentMakefile->GetRequiredDefinition(
+ "CMAKE_CONFIGURATION_TYPES") };
cmXCodeObject* configlist =
this->CreateObject(cmXCodeObject::XCConfigurationList);
cmXCodeObject* buildConfigurations =
@@ -3140,7 +3141,7 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
configlist->SetComment(comment);
target->AddAttribute("buildConfigurationList",
this->CreateObjectReference(configlist));
- for (auto const& i : configVector) {
+ for (auto const& i : configList) {
cmXCodeObject* config =
this->CreateObject(cmXCodeObject::XCBuildConfiguration);
buildConfigurations->AddObject(config);
@@ -3153,12 +3154,12 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
this->CreateTargetXCConfigSettings(gtgt, config, i);
}
- if (!configVector.empty()) {
+ if (!configList.empty()) {
configlist->AddAttribute("defaultConfigurationName",
- this->CreateString(configVector[0]));
+ this->CreateString(configList[0]));
configlist->AddAttribute("defaultConfigurationIsVisible",
this->CreateString("0"));
- return configVector[0];
+ return configList[0];
}
return "";
}
@@ -4029,7 +4030,7 @@ void cmGlobalXCodeGenerator::AddEmbeddedObjects(
this->CreateString("0"));
cmXCodeObject* buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
// Collect all embedded frameworks and dylibs and add them to build phase
- std::vector<std::string> relFiles = cmExpandedList(*files);
+ cmList relFiles{ *files };
for (std::string const& relFile : relFiles) {
cmXCodeObject* buildFile{ nullptr };
std::string filePath = relFile;
@@ -5008,7 +5009,7 @@ void cmGlobalXCodeGenerator::AppendDefines(BuildObjectListOrString& defs,
}
// Expand the list of definitions.
- std::vector<std::string> defines = cmExpandedList(defines_list);
+ cmList defines{ defines_list };
// Store the definitions in the string.
this->AppendDefines(defs, defines, dflag);
diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx
index 2bb438d7d4..a8a7abb087 100644
--- a/Source/cmGraphVizWriter.cxx
+++ b/Source/cmGraphVizWriter.cxx
@@ -15,6 +15,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmLinkItem.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmState.h"
@@ -255,9 +256,8 @@ void cmGraphVizWriter::ReadSettings(
this->TargetsToIgnoreRegex.clear();
if (!ignoreTargetsRegexes.empty()) {
- std::vector<std::string> ignoreTargetsRegExVector =
- cmExpandedList(ignoreTargetsRegexes);
- for (std::string const& currentRegexString : ignoreTargetsRegExVector) {
+ cmList ignoreTargetsRegExList{ ignoreTargetsRegexes };
+ for (std::string const& currentRegexString : ignoreTargetsRegExList) {
cmsys::RegularExpression currentRegex;
if (!currentRegex.compile(currentRegexString)) {
std::cerr << "Could not compile bad regex \"" << currentRegexString
diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx
index 40230d9fb6..7f5f15b3c9 100644
--- a/Source/cmInstallCommand.cxx
+++ b/Source/cmInstallCommand.cxx
@@ -39,6 +39,7 @@
#include "cmInstallRuntimeDependencySetGenerator.h"
#include "cmInstallScriptGenerator.h"
#include "cmInstallTargetGenerator.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmPolicies.h"
@@ -1079,7 +1080,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
if (createInstallGeneratorsForTargetFileSets && !namelinkOnly) {
cmValue files = target.GetProperty("PRIVATE_HEADER");
if (cmNonempty(files)) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
+ cmList relFiles{ *files };
std::vector<std::string> absFiles;
if (!helper.MakeFilesFullPath("PRIVATE_HEADER", relFiles, absFiles)) {
return false;
@@ -1101,7 +1102,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
files = target.GetProperty("PUBLIC_HEADER");
if (cmNonempty(files)) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
+ cmList relFiles{ *files };
std::vector<std::string> absFiles;
if (!helper.MakeFilesFullPath("PUBLIC_HEADER", relFiles, absFiles)) {
return false;
@@ -1123,7 +1124,7 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
files = target.GetProperty("RESOURCE");
if (cmNonempty(files)) {
- std::vector<std::string> relFiles = cmExpandedList(*files);
+ cmList relFiles{ *files };
std::vector<std::string> absFiles;
if (!helper.MakeFilesFullPath("RESOURCE", relFiles, absFiles)) {
return false;
@@ -1145,8 +1146,8 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
if (!namelinkOnly) {
for (std::size_t i = 0; i < fileSetArgs.size(); i++) {
if (auto* fileSet = target.GetFileSet(fileSetArgs[i].GetFileSet())) {
- auto interfaceFileSetEntries = cmExpandedList(target.GetSafeProperty(
- cmTarget::GetInterfaceFileSetsPropertyName(fileSet->GetType())));
+ cmList interfaceFileSetEntries{ target.GetSafeProperty(
+ cmTarget::GetInterfaceFileSetsPropertyName(fileSet->GetType())) };
if (std::find(interfaceFileSetEntries.begin(),
interfaceFileSetEntries.end(),
fileSetArgs[i].GetFileSet()) !=
diff --git a/Source/cmLDConfigLDConfigTool.cxx b/Source/cmLDConfigLDConfigTool.cxx
index cce6178dae..0752b3353d 100644
--- a/Source/cmLDConfigLDConfigTool.cxx
+++ b/Source/cmLDConfigLDConfigTool.cxx
@@ -9,9 +9,9 @@
#include "cmsys/RegularExpression.hxx"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmRuntimeDependencyArchive.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmUVProcessChain.h"
@@ -34,7 +34,7 @@ bool cmLDConfigLDConfigTool::GetLDConfigPaths(std::vector<std::string>& paths)
}
}
- std::vector<std::string> ldConfigCommand = cmExpandedList(ldConfigPath);
+ cmList ldConfigCommand{ ldConfigPath };
ldConfigCommand.emplace_back("-v");
ldConfigCommand.emplace_back("-N"); // Don't rebuild the cache.
ldConfigCommand.emplace_back("-X"); // Don't update links.
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index 6270c825f2..97f5de9697 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -11,10 +11,10 @@
# include <cmsys/Encoding.hxx>
#endif
+#include "cmList.h"
#include "cmListFileLexer.h"
#include "cmMessageType.h"
#include "cmMessenger.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
struct cmListFileParser
@@ -496,10 +496,11 @@ std::ostream& operator<<(std::ostream& os, BT<std::string> const& s)
}
std::vector<BT<std::string>> cmExpandListWithBacktrace(
- std::string const& list, cmListFileBacktrace const& bt, bool emptyArgs)
+ std::string const& list, cmListFileBacktrace const& bt,
+ cmList::EmptyElements emptyArgs)
{
std::vector<BT<std::string>> result;
- std::vector<std::string> tmp = cmExpandedList(list, emptyArgs);
+ cmList tmp{ list, emptyArgs };
result.reserve(tmp.size());
for (std::string& i : tmp) {
result.emplace_back(std::move(i), bt);
diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index 05539892c9..e4e6eb37ed 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -13,6 +13,7 @@
#include <cm/optional>
#include "cmConstStack.h"
+#include "cmList.h"
#include "cmSystemTools.h"
/** \class cmListFileCache
@@ -232,7 +233,7 @@ public:
std::vector<BT<std::string>> cmExpandListWithBacktrace(
std::string const& list,
cmListFileBacktrace const& bt = cmListFileBacktrace(),
- bool emptyArgs = false);
+ cmList::EmptyElements emptyArgs = cmList::EmptyElements::No);
struct cmListFile
{
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 01e4241360..e00341cbbb 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -38,6 +38,7 @@
#include "cmInstallTargetGenerator.h"
#include "cmLinkLineComputer.h"
#include "cmLinkLineDeviceComputer.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmRange.h"
#include "cmRulePlaceholderExpander.h"
@@ -347,7 +348,7 @@ void cmLocalGenerator::GenerateTestFiles()
cmValue testIncludeFiles = this->Makefile->GetProperty("TEST_INCLUDE_FILES");
if (testIncludeFiles) {
- std::vector<std::string> includesList = cmExpandedList(*testIncludeFiles);
+ cmList includesList{ *testIncludeFiles };
for (std::string const& i : includesList) {
fout << "include(\"" << i << "\")\n";
}
@@ -1064,9 +1065,9 @@ void cmLocalGenerator::AddCompileOptions(std::vector<BT<std::string>>& flags,
std::string isJMCEnabled =
cmGeneratorExpression::Evaluate(*jmcExprGen, this, config);
if (cmIsOn(isJMCEnabled)) {
- std::vector<std::string> optVec = cmExpandedList(*jmc);
+ cmList optList{ *jmc };
std::string jmcFlags;
- this->AppendCompileOptions(jmcFlags, optVec);
+ this->AppendCompileOptions(jmcFlags, optList);
if (!jmcFlags.empty()) {
flags.emplace_back(std::move(jmcFlags));
}
@@ -1954,8 +1955,8 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
cmValue opt =
target->Target->GetMakefile()->GetDefinition(optionFlagDef);
if (opt) {
- std::vector<std::string> optVec = cmExpandedList(*opt);
- for (std::string const& i : optVec) {
+ cmList optList{ *opt };
+ for (std::string const& i : optList) {
this->AppendFlagEscape(flags, i);
}
}
@@ -2426,7 +2427,7 @@ void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags,
cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_PIC"));
}
if (!picFlags.empty()) {
- std::vector<std::string> options = cmExpandedList(picFlags);
+ cmList options{ picFlags };
for (std::string const& o : options) {
this->AppendFlagEscape(flags, o);
}
@@ -3163,7 +3164,7 @@ void cmLocalGenerator::AppendIPOLinkerFlags(std::string& flags,
return;
}
- std::vector<std::string> flagsList = cmExpandedList(*rawFlagsList);
+ cmList flagsList{ *rawFlagsList };
for (std::string const& o : flagsList) {
this->AppendFlagEscape(flags, o);
}
@@ -3198,7 +3199,7 @@ void cmLocalGenerator::AppendPositionIndependentLinkerFlags(
return;
}
- std::vector<std::string> flagsList = cmExpandedList(pieFlags);
+ cmList flagsList{ pieFlags };
for (const auto& flag : flagsList) {
this->AppendFlagEscape(flags, flag);
}
@@ -3264,7 +3265,7 @@ void cmLocalGenerator::AppendCompileOptions(std::string& options,
}
// Expand the list of options.
- std::vector<std::string> options_vec = cmExpandedList(options_list);
+ cmList options_vec{ options_list };
this->AppendCompileOptions(options, options_vec, regex);
}
@@ -3322,7 +3323,7 @@ void cmLocalGenerator::AppendIncludeDirectories(
}
// Expand the list of includes.
- std::vector<std::string> includes_vec = cmExpandedList(includes_list);
+ cmList includes_vec{ includes_list };
this->AppendIncludeDirectories(includes, includes_vec, sourceFile);
}
@@ -3454,7 +3455,7 @@ void cmLocalGenerator::AppendFeatureOptions(std::string& flags,
cmValue optionList = this->Makefile->GetDefinition(
cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_", feature));
if (optionList) {
- std::vector<std::string> options = cmExpandedList(*optionList);
+ cmList options{ *optionList };
for (std::string const& o : options) {
this->AppendFlagEscape(flags, o);
}
@@ -4500,11 +4501,11 @@ cmLocalGenerator::MakeCustomCommandGenerators(cmCustomCommand const& cc,
std::vector<std::string> cmLocalGenerator::ExpandCustomCommandOutputPaths(
cmCompiledGeneratorExpression const& cge, std::string const& config)
{
- std::vector<std::string> paths = cmExpandedList(cge.Evaluate(this, config));
+ cmList paths{ cge.Evaluate(this, config) };
for (std::string& p : paths) {
p = cmSystemTools::CollapseFullPath(p, this->GetCurrentBinaryDirectory());
}
- return paths;
+ return std::move(paths.data());
}
std::vector<std::string> cmLocalGenerator::ExpandCustomCommandOutputGenex(
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index d0bd3758f4..42fa29894f 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -22,6 +22,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmGlobalNinjaGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -301,7 +302,7 @@ void cmLocalNinjaGenerator::WritePools(std::ostream& os)
if (jobpools) {
cmGlobalNinjaGenerator::WriteComment(
os, "Pools defined by global property JOB_POOLS");
- std::vector<std::string> pools = cmExpandedList(*jobpools);
+ cmList pools{ *jobpools };
for (std::string const& pool : pools) {
const std::string::size_type eq = pool.find('=');
unsigned int jobs;
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index 56a41b1a98..12cecbd1ff 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -29,6 +29,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmGlobalUnixMakefileGenerator3.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -1434,7 +1435,7 @@ bool cmLocalUnixMakefileGenerator3::UpdateDependencies(
this->Makefile->GetSafeDefinition("CMAKE_DEPENDS_DEPENDENCY_FILES");
if (!depends.empty()) {
// dependencies are managed by compiler
- auto depFiles = cmExpandedList(depends, true);
+ cmList depFiles{ depends, cmList::EmptyElements::Yes };
std::string const internalDepFile =
targetDir + "/compiler_depend.internal";
std::string const depFile = targetDir + "/compiler_depend.make";
@@ -1556,8 +1557,7 @@ bool cmLocalUnixMakefileGenerator3::ScanDependencies(
this->WriteDisclaimer(internalRuleFileStream);
// for each language we need to scan, scan it
- std::vector<std::string> langs =
- cmExpandedList(mf->GetSafeDefinition("CMAKE_DEPENDS_LANGUAGES"));
+ cmList langs{ mf->GetSafeDefinition("CMAKE_DEPENDS_LANGUAGES") };
for (std::string const& lang : langs) {
// construct the checker
// Create the scanner for this language
@@ -1602,7 +1602,7 @@ void cmLocalUnixMakefileGenerator3::CheckMultipleOutputs(bool verbose)
}
// Convert the string to a list and preserve empty entries.
- std::vector<std::string> pairs = cmExpandedList(*pairs_string, true);
+ cmList pairs{ *pairs_string, cmList::EmptyElements::Yes };
for (auto i = pairs.begin(); i != pairs.end() && (i + 1) != pairs.end();) {
const std::string& depender = *i++;
const std::string& dependee = *i++;
@@ -1822,7 +1822,7 @@ void cmLocalUnixMakefileGenerator3::ClearDependencies(cmMakefile* mf,
if (!infoDef) {
return;
}
- std::vector<std::string> files = cmExpandedList(*infoDef);
+ cmList files{ *infoDef };
// Each depend information file corresponds to a target. Clear the
// dependencies for that target.
@@ -1863,7 +1863,7 @@ void cmLocalUnixMakefileGenerator3::ClearDependencies(cmMakefile* mf,
cmSystemTools::Touch(DepTimestamp.GenericString(), true);
// clear the dependencies files generated by the compiler
- std::vector<std::string> dependencies = cmExpandedList(depsFiles, true);
+ cmList dependencies{ depsFiles, cmList::EmptyElements::Yes };
cmDependsCompiler depsManager;
depsManager.SetVerbose(verbose);
depsManager.ClearDependencies(dependencies);
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 239748db67..a7ea0dff2c 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -29,6 +29,7 @@
#include "cmGlobalGenerator.h"
#include "cmGlobalVisualStudio7Generator.h"
#include "cmGlobalVisualStudioGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmOutputConverter.h"
@@ -1576,12 +1577,12 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo(
// Check for extra object-file dependencies.
if (cmValue deps = sf.GetProperty("OBJECT_DEPENDS")) {
- std::vector<std::string> depends = cmExpandedList(*deps);
- const char* sep = "";
- for (const std::string& d : depends) {
- fc.AdditionalDeps += sep;
- fc.AdditionalDeps += lg->ConvertToXMLOutputPath(d);
- sep = ";";
+ cmList depends{ *deps };
+ if (!depends.empty()) {
+ for (std::string& d : depends) {
+ d = lg->ConvertToXMLOutputPath(d);
+ }
+ fc.AdditionalDeps += depends.to_string();
needfc = true;
}
}
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 3a69b2eeed..490a905fd3 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -43,6 +43,7 @@
#include "cmGlobalGenerator.h"
#include "cmInstallGenerator.h" // IWYU pragma: keep
#include "cmInstallSubdirectoryGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMessageType.h"
@@ -1448,15 +1449,13 @@ bool cmMakefile::ParseDefineFlag(std::string const& def, bool remove)
if (remove) {
if (cmValue cdefs = this->GetProperty("COMPILE_DEFINITIONS")) {
// Expand the list.
- std::vector<std::string> defs = cmExpandedList(*cdefs);
+ cmList defs{ *cdefs };
// Recompose the list without the definition.
- auto defEnd = std::remove(defs.begin(), defs.end(), define);
- auto defBegin = defs.begin();
- std::string ndefs = cmJoin(cmMakeRange(defBegin, defEnd), ";");
+ defs.remove_items({ define });
// Store the new list.
- this->SetProperty("COMPILE_DEFINITIONS", ndefs);
+ this->SetProperty("COMPILE_DEFINITIONS", defs.to_string());
}
} else {
// Append the definition to the directory property.
@@ -2064,7 +2063,7 @@ void cmMakefile::AddGlobalLinkInformation(cmTarget& target)
}
if (cmValue linkLibsProp = this->GetProperty("LINK_LIBRARIES")) {
- std::vector<std::string> linkLibs = cmExpandedList(*linkLibsProp);
+ cmList linkLibs{ *linkLibsProp };
for (auto j = linkLibs.begin(); j != linkLibs.end(); ++j) {
std::string libraryName = *j;
@@ -2378,7 +2377,7 @@ void cmMakefile::ExpandVariablesCMP0019()
}
if (cmValue linkLibsProp = this->GetProperty("LINK_LIBRARIES")) {
- std::vector<std::string> linkLibs = cmExpandedList(*linkLibsProp);
+ cmList linkLibs{ *linkLibsProp };
for (auto l = linkLibs.begin(); l != linkLibs.end(); ++l) {
std::string libName = *l;
@@ -3406,7 +3405,7 @@ bool cmMakefile::ExpandArguments(
if (i.Delim == cmListFileArgument::Quoted) {
outArgs.emplace_back(value, true);
} else {
- std::vector<std::string> stringArgs = cmExpandedList(value);
+ cmList stringArgs{ value };
for (std::string const& stringArg : stringArgs) {
outArgs.emplace_back(stringArg, false);
}
@@ -3812,7 +3811,7 @@ std::string cmMakefile::GetModulesFile(const std::string& filename,
// Always search in CMAKE_MODULE_PATH:
cmValue cmakeModulePath = this->GetDefinition("CMAKE_MODULE_PATH");
if (cmakeModulePath) {
- std::vector<std::string> modulePath = cmExpandedList(*cmakeModulePath);
+ cmList modulePath{ *cmakeModulePath };
// Look through the possible module directories.
for (std::string itempl : modulePath) {
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx
index 3e4a08ee27..43062d98b5 100644
--- a/Source/cmMakefileLibraryTargetGenerator.cxx
+++ b/Source/cmMakefileLibraryTargetGenerator.cxx
@@ -16,6 +16,7 @@
#include "cmGlobalUnixMakefileGenerator3.h"
#include "cmLinkLineComputer.h"
#include "cmLinkLineDeviceComputer.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmLocalUnixMakefileGenerator3.h"
#include "cmMakefile.h"
@@ -965,7 +966,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
this->GeneratorTarget->HasImportLibrary(this->GetConfigName())) {
auto genStubsRule =
this->Makefile->GetDefinition("CMAKE_CREATE_TEXT_STUBS");
- auto genStubs_commands = cmExpandedList(genStubsRule);
+ cmList genStubs_commands{ genStubsRule };
std::string TBDFullPath =
cmStrCat(outpathImp, this->TargetNames.ImportOutput);
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index 3112acd578..1e35fe7ca8 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -29,6 +29,7 @@
#include "cmGlobalCommonGenerator.h"
#include "cmGlobalUnixMakefileGenerator3.h"
#include "cmLinkLineComputer.h" // IWYU pragma: keep
+#include "cmList.h"
#include "cmLocalCommonGenerator.h"
#include "cmLocalGenerator.h"
#include "cmLocalUnixMakefileGenerator3.h"
@@ -1200,7 +1201,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
// If compiler launcher was specified and not consumed above, it
// goes to the beginning of the command line.
if (!compileCommands.empty() && !compilerLauncher.empty()) {
- std::vector<std::string> args = cmExpandedList(compilerLauncher, true);
+ cmList args{ compilerLauncher, cmList::EmptyElements::Yes };
if (!args.empty()) {
args[0] = this->LocalGenerator->ConvertToOutputFormat(
args[0], cmOutputConverter::SHELL);
@@ -1240,7 +1241,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
const auto& extraCommands = this->Makefile->GetSafeDefinition(
cmStrCat("CMAKE_", lang, "_DEPENDS_EXTRA_COMMANDS"));
if (!extraCommands.empty()) {
- auto commandList = cmExpandedList(extraCommands);
+ cmList commandList{ extraCommands };
compileCommands.insert(compileCommands.end(), commandList.cbegin(),
commandList.cend());
}
@@ -1341,8 +1342,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
cmStrCat("CMAKE_", lang, "_CREATE_PREPROCESSED_SOURCE");
if (cmValue preprocessRule =
this->Makefile->GetDefinition(preprocessRuleVar)) {
- std::vector<std::string> preprocessCommands =
- cmExpandedList(*preprocessRule);
+ cmList preprocessCommands{ *preprocessRule };
std::string shellObjI = this->LocalGenerator->ConvertToOutputFormat(
objI, cmOutputConverter::SHELL);
@@ -1386,8 +1386,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
cmStrCat("CMAKE_", lang, "_CREATE_ASSEMBLY_SOURCE");
if (cmValue assemblyRule =
this->Makefile->GetDefinition(assemblyRuleVar)) {
- std::vector<std::string> assemblyCommands =
- cmExpandedList(*assemblyRule);
+ cmList assemblyCommands{ *assemblyRule };
std::string shellObjS = this->LocalGenerator->ConvertToOutputFormat(
objS, cmOutputConverter::SHELL);
@@ -1674,7 +1673,7 @@ void cmMakefileTargetGenerator::WriteDeviceLinkRule(
}
cmLocalUnixMakefileGenerator3* localGen{ this->LocalGenerator };
- std::vector<std::string> architectures = cmExpandedList(architecturesStr);
+ cmList architectures{ architecturesStr };
std::string const& relPath = localGen->GetHomeRelativeOutputPath();
// Ensure there are no duplicates.
diff --git a/Source/cmMessageCommand.cxx b/Source/cmMessageCommand.cxx
index 52373f3160..baf40f8258 100644
--- a/Source/cmMessageCommand.cxx
+++ b/Source/cmMessageCommand.cxx
@@ -10,6 +10,7 @@
#include "cmConfigureLog.h"
#include "cmExecutionStatus.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmMessenger.h"
@@ -31,13 +32,13 @@ enum class CheckingType
std::string IndentText(std::string text, cmMakefile& mf)
{
auto indent =
- cmJoin(cmExpandedList(mf.GetSafeDefinition("CMAKE_MESSAGE_INDENT")), "");
+ cmList{ mf.GetSafeDefinition("CMAKE_MESSAGE_INDENT") }.join("");
const auto showContext = mf.GetCMakeInstance()->GetShowLogContext() ||
mf.IsOn("CMAKE_MESSAGE_CONTEXT_SHOW");
if (showContext) {
- auto context = cmJoin(
- cmExpandedList(mf.GetSafeDefinition("CMAKE_MESSAGE_CONTEXT")), ".");
+ auto context =
+ cmList{ mf.GetSafeDefinition("CMAKE_MESSAGE_CONTEXT") }.join(".");
if (!context.empty()) {
indent.insert(0u, cmStrCat("["_s, context, "] "_s));
}
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 4d68460521..eb16f8f371 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -23,6 +23,7 @@
#include "cmGlobalNinjaGenerator.h"
#include "cmLinkLineComputer.h"
#include "cmLinkLineDeviceComputer.h"
+#include "cmList.h"
#include "cmLocalCommonGenerator.h"
#include "cmLocalGenerator.h"
#include "cmLocalNinjaGenerator.h"
@@ -754,7 +755,7 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkStatement(
}
this->WriteDeviceLinkRules(config);
- this->WriteDeviceLinkStatements(config, cmExpandedList(architecturesStr),
+ this->WriteDeviceLinkStatements(config, cmList{ architecturesStr },
targetOutputReal);
} else {
this->WriteNvidiaDeviceLinkStatement(config, fileConfig, targetOutputDir,
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 5dbc283fac..905c68ed61 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -32,6 +32,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalCommonGenerator.h"
#include "cmGlobalNinjaGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmLocalNinjaGenerator.h"
#include "cmMakefile.h"
@@ -1038,7 +1039,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
// If compiler launcher was specified and not consumed above, it
// goes to the beginning of the command line.
if (!compileCmds.empty() && !compilerLauncher.empty()) {
- std::vector<std::string> args = cmExpandedList(compilerLauncher, true);
+ cmList args{ compilerLauncher, cmList::EmptyElements::Yes };
if (!args.empty()) {
args[0] = this->LocalGenerator->ConvertToOutputFormat(
args[0], cmOutputConverter::SHELL);
@@ -1046,7 +1047,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
i = this->LocalGenerator->EscapeForShell(i);
}
}
- compileCmds.front().insert(0, cmStrCat(cmJoin(args, " "), ' '));
+ compileCmds.front().insert(0, cmStrCat(args.join(" "), ' '));
}
if (!compileCmds.empty()) {
@@ -1056,7 +1057,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
const auto& extraCommands = this->GetMakefile()->GetSafeDefinition(
cmStrCat("CMAKE_", lang, "_DEPENDS_EXTRA_COMMANDS"));
if (!extraCommands.empty()) {
- auto commandList = cmExpandedList(extraCommands);
+ cmList commandList{ extraCommands };
compileCmds.insert(compileCmds.end(), commandList.cbegin(),
commandList.cend());
}
@@ -1468,7 +1469,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
}
if (cmValue objectDeps = source->GetProperty("OBJECT_DEPENDS")) {
- std::vector<std::string> objDepList = cmExpandedList(*objectDeps);
+ cmList objDepList{ *objectDeps };
std::copy(objDepList.begin(), objDepList.end(),
std::back_inserter(depList));
}
@@ -1688,7 +1689,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
if (!evaluatedObjectOutputs.empty()) {
cmNinjaBuild build("phony");
build.Comment = "Additional output files.";
- build.Outputs = cmExpandedList(evaluatedObjectOutputs);
+ build.Outputs = cmList{ evaluatedObjectOutputs }.data();
std::transform(build.Outputs.begin(), build.Outputs.end(),
build.Outputs.begin(), this->MapToNinjaPath());
build.ExplicitDeps = objBuild.Outputs;
diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx
index 6c54e01e3d..40fed80cfc 100644
--- a/Source/cmOutputConverter.cxx
+++ b/Source/cmOutputConverter.cxx
@@ -6,16 +6,15 @@
#include <cassert>
#include <cctype>
#include <set>
-#include <vector>
#ifdef _WIN32
# include <unordered_map>
# include <utility>
#endif
+#include "cmList.h"
#include "cmState.h"
#include "cmStateDirectory.h"
-#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
#include "cmValue.h"
@@ -319,7 +318,7 @@ cmOutputConverter::FortranFormat cmOutputConverter::GetFortranFormat(
{
FortranFormat format = FortranFormatNone;
if (!value.empty()) {
- for (std::string const& fi : cmExpandedList(value)) {
+ for (std::string const& fi : cmList(value)) {
if (fi == "FIXED") {
format = FortranFormatFixed;
}
diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx
index ad276d2f70..f147ed22de 100644
--- a/Source/cmOutputRequiredFilesCommand.cxx
+++ b/Source/cmOutputRequiredFilesCommand.cxx
@@ -14,6 +14,7 @@
#include "cmExecutionStatus.h"
#include "cmGeneratorExpression.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmSourceFile.h"
#include "cmStringAlgorithms.h"
@@ -126,9 +127,9 @@ public:
std::string incDirs = cmGeneratorExpression::Preprocess(
*incDirProp, cmGeneratorExpression::StripAllGeneratorExpressions);
- std::vector<std::string> includes = cmExpandedList(incDirs);
+ cmList includes{ incDirs };
- for (std::string& path : includes) {
+ for (auto& path : includes) {
this->Makefile->ExpandVariablesInString(path);
if (uniqueIncludes.insert(path).second) {
orderedAndUniqueIncludes.push_back(path);
diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx
index 7e195664e2..3e677e60f8 100644
--- a/Source/cmParseArgumentsCommand.cxx
+++ b/Source/cmParseArgumentsCommand.cxx
@@ -12,6 +12,7 @@
#include "cmArgumentParser.h"
#include "cmArgumentParserTypes.h"
#include "cmExecutionStatus.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmRange.h"
@@ -169,7 +170,7 @@ bool cmParseArgumentsCommand(std::vector<std::string> const& args,
};
// the second argument is a (cmake) list of options without argument
- std::vector<std::string> list = cmExpandedList(*argIter++);
+ cmList list{ *argIter++ };
parser.Bind(list, options, duplicateKey);
// the third argument is a (cmake) list of single argument options
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index 782c154653..4c459497a1 100644
--- a/Source/cmQtAutoGenInitializer.cxx
+++ b/Source/cmQtAutoGenInitializer.cxx
@@ -35,6 +35,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmLinkItem.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -507,7 +508,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets()
std::string const& deps =
this->GenTarget->GetSafeProperty("AUTOGEN_TARGET_DEPENDS");
if (!deps.empty()) {
- for (std::string const& depName : cmExpandedList(deps)) {
+ for (auto const& depName : cmList{ deps }) {
// Allow target and file dependencies
auto* depTarget = this->Makefile->FindTargetToUse(depName);
if (depTarget) {
@@ -545,8 +546,8 @@ bool cmQtAutoGenInitializer::InitCustomTargets()
this->Moc.MacroNames.erase(cmRemoveDuplicates(this->Moc.MacroNames),
this->Moc.MacroNames.end());
{
- auto filterList = cmExpandedList(
- this->GenTarget->GetSafeProperty("AUTOMOC_DEPEND_FILTERS"));
+ cmList filterList = { this->GenTarget->GetSafeProperty(
+ "AUTOMOC_DEPEND_FILTERS") };
if ((filterList.size() % 2) != 0) {
cmSystemTools::Error(
cmStrCat("AutoMoc: AUTOMOC_DEPEND_FILTERS predefs size ",
@@ -558,7 +559,9 @@ bool cmQtAutoGenInitializer::InitCustomTargets()
"Q_PLUGIN_METADATA",
"[\n][ \t]*Q_PLUGIN_METADATA[ \t]*\\("
"[^\\)]*FILE[ \t]*\"([^\"]+)\"");
- for (std::size_t ii = 0; ii != filterList.size(); ii += 2) {
+ for (cmList::index_type ii = 0;
+ ii != static_cast<cmList::index_type>(filterList.size());
+ ii += 2) {
this->Moc.DependFilters.emplace_back(filterList[ii],
filterList[ii + 1]);
}
@@ -701,7 +704,7 @@ bool cmQtAutoGenInitializer::InitUic()
this->GenTarget->GetSafeProperty("AUTOUIC_SEARCH_PATHS");
if (!usp.empty()) {
this->Uic.SearchPaths =
- SearchPathSanitizer(this->Makefile)(cmExpandedList(usp));
+ SearchPathSanitizer(this->Makefile)(cmList{ usp });
}
}
// Uic target options
@@ -961,8 +964,8 @@ bool cmQtAutoGenInitializer::InitScanFiles()
if (uicOpts.empty()) {
this->Uic.UiFilesNoOptions.emplace_back(fullPath);
} else {
- this->Uic.UiFilesWithOptions.emplace_back(fullPath,
- cmExpandedList(uicOpts));
+ this->Uic.UiFilesWithOptions.emplace_back(
+ fullPath, std::move(cmList{ uicOpts }.data()));
}
auto uiHeaderRelativePath = cmSystemTools::RelativePath(
@@ -1063,8 +1066,8 @@ bool cmQtAutoGenInitializer::InitScanFiles()
if (!this->Rcc.Qrcs.empty()) {
const bool modernQt = (this->QtVersion.Major >= 5);
// Target rcc options
- std::vector<std::string> optionsTarget =
- cmExpandedList(this->GenTarget->GetSafeProperty(kw.AUTORCC_OPTIONS));
+ cmList optionsTarget{ this->GenTarget->GetSafeProperty(
+ kw.AUTORCC_OPTIONS) };
// Check if file name is unique
for (Qrc& qrc : this->Rcc.Qrcs) {
diff --git a/Source/cmRemoveCommand.cxx b/Source/cmRemoveCommand.cxx
index 8af13ae2b4..65a2268bc8 100644
--- a/Source/cmRemoveCommand.cxx
+++ b/Source/cmRemoveCommand.cxx
@@ -3,8 +3,8 @@
#include "cmRemoveCommand.h"
#include "cmExecutionStatus.h"
+#include "cmList.h"
#include "cmMakefile.h"
-#include "cmStringAlgorithms.h"
#include "cmValue.h"
// cmRemoveCommand
@@ -25,12 +25,11 @@ bool cmRemoveCommand(std::vector<std::string> const& args,
}
// expand the variable
- std::vector<std::string> const varArgsExpanded = cmExpandedList(*cacheValue);
+ cmList const varArgsExpanded{ *cacheValue };
// expand the args
// check for REMOVE(VAR v1 v2 ... vn)
- std::vector<std::string> const argsExpanded =
- cmExpandedLists(args.begin() + 1, args.end());
+ cmList const argsExpanded{ args.begin() + 1, args.end() };
// now create the new value
std::string value;
diff --git a/Source/cmSearchPath.cxx b/Source/cmSearchPath.cxx
index d5f6f0dc21..2b992ef285 100644
--- a/Source/cmSearchPath.cxx
+++ b/Source/cmSearchPath.cxx
@@ -9,6 +9,7 @@
#include <cm/optional>
#include "cmFindCommon.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
@@ -71,7 +72,7 @@ void cmSearchPath::AddCMakePath(const std::string& variable)
// Get a path from a CMake variable.
if (cmValue value = this->FC->Makefile->GetDefinition(variable)) {
- std::vector<std::string> expanded = cmExpandedList(*value);
+ cmList expanded{ *value };
for (std::string const& p : expanded) {
this->AddPathInternal(
@@ -95,7 +96,7 @@ void cmSearchPath::AddCMakePrefixPath(const std::string& variable)
// Get a path from a CMake variable.
if (cmValue value = this->FC->Makefile->GetDefinition(variable)) {
- std::vector<std::string> expanded = cmExpandedList(*value);
+ cmList expanded{ *value };
this->AddPrefixPaths(
expanded, this->FC->Makefile->GetCurrentSourceDirectory().c_str());
diff --git a/Source/cmStandardLevelResolver.cxx b/Source/cmStandardLevelResolver.cxx
index d2eac0cd7b..f6e8bc6f34 100644
--- a/Source/cmStandardLevelResolver.cxx
+++ b/Source/cmStandardLevelResolver.cxx
@@ -18,6 +18,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -349,7 +350,7 @@ struct StandardLevelComputer
for (size_t i = 0; i < this->Levels.size(); ++i) {
if (cmValue prop = makefile->GetDefinition(
cmStrCat(prefix, this->LevelsAsStrings[i], "_COMPILE_FEATURES"))) {
- std::vector<std::string> props = cmExpandedList(*prop);
+ cmList props{ *prop };
if (cm::contains(props, feature)) {
maxLevel = { static_cast<int>(i), this->Levels[i] };
}
@@ -468,7 +469,7 @@ bool cmStandardLevelResolver::CheckCompileFeaturesAvailable(
return false;
}
- std::vector<std::string> availableFeatures = cmExpandedList(features);
+ cmList availableFeatures{ features };
if (!cm::contains(availableFeatures, feature)) {
std::ostringstream e;
e << "The compiler feature \"" << feature << "\" is not known to " << lang
diff --git a/Source/cmStringAlgorithms.cxx b/Source/cmStringAlgorithms.cxx
index 968dd3c7c7..e352d8dd22 100644
--- a/Source/cmStringAlgorithms.cxx
+++ b/Source/cmStringAlgorithms.cxx
@@ -80,13 +80,6 @@ std::vector<std::string> cmTokenize(cm::string_view str, cm::string_view sep)
return tokens;
}
-std::vector<std::string> cmExpandedList(cm::string_view arg, bool emptyArgs)
-{
- std::vector<std::string> argsOut;
- cmExpandList(arg, argsOut, emptyArgs);
- return argsOut;
-}
-
namespace {
template <std::size_t N, typename T>
inline void MakeDigits(cm::string_view& view, char (&digits)[N],
diff --git a/Source/cmStringAlgorithms.h b/Source/cmStringAlgorithms.h
index 20274e80f7..4ccbb8e7c5 100644
--- a/Source/cmStringAlgorithms.h
+++ b/Source/cmStringAlgorithms.h
@@ -121,35 +121,6 @@ void cmExpandLists(InputIt first, InputIt last,
cmList::append(first, last, argsOut);
}
-/**
- * Same as cmExpandList but a new vector is created containing
- * the expanded arguments from the string @a arg.
- */
-std::vector<std::string> cmExpandedList(cm::string_view arg,
- bool emptyArgs = false);
-inline std::vector<std::string> cmExpandedList(cmValue arg,
- bool emptyArgs = false)
-{
- if (!arg) {
- return {};
- }
- return cmExpandedList(*arg, emptyArgs);
-}
-
-/**
- * Same as cmExpandList but a new vector is created containing the expanded
- * versions of all arguments in the string range [@a first, @a last).
- */
-template <class InputIt>
-std::vector<std::string> cmExpandedLists(InputIt first, InputIt last)
-{
- std::vector<std::string> argsOut;
- for (; first != last; ++first) {
- cmExpandList(*first, argsOut);
- }
- return argsOut;
-}
-
/** Concatenate string pieces into a single string. */
std::string cmCatViews(
std::initializer_list<std::pair<cm::string_view, std::string*>> views);
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 5e558714e2..4f146484b8 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -23,6 +23,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -92,7 +93,7 @@ cmValue cmTargetPropertyComputer::GetSources<cmTarget>(cmTarget const* tgt,
std::ostringstream ss;
const char* sep = "";
for (auto const& entry : entries) {
- std::vector<std::string> files = cmExpandedList(entry.Value);
+ cmList files{ entry.Value };
for (std::string const& file : files) {
if (cmHasLiteralPrefix(file, "$<TARGET_OBJECTS:") &&
file.back() == '>') {
@@ -1115,7 +1116,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
if (globals) {
const std::string genName = mf->GetGlobalGenerator()->GetName();
if (cmHasLiteralPrefix(genName, "Visual Studio")) {
- std::vector<std::string> props = cmExpandedList(*globals);
+ cmList props{ *globals };
const std::string vsGlobal = "VS_GLOBAL_";
for (const std::string& i : props) {
// split NAME=VALUE
@@ -1428,7 +1429,7 @@ public:
bool operator()(BT<std::string> const& entry)
{
- std::vector<std::string> files = cmExpandedList(entry.Value);
+ cmList files{ entry.Value };
std::vector<cmSourceFileLocation> locations;
locations.reserve(files.size());
std::transform(files.begin(), files.end(), std::back_inserter(locations),
@@ -2967,7 +2968,7 @@ std::vector<std::string> cmTarget::GetAllInterfaceFileSets() const
auto appendEntries = [=](const std::vector<BT<std::string>>& entries) {
for (auto const& entry : entries) {
- auto expanded = cmExpandedList(entry.Value);
+ cmList expanded{ entry.Value };
std::copy(expanded.begin(), expanded.end(), inserter);
}
};
diff --git a/Source/cmTargetSourcesCommand.cxx b/Source/cmTargetSourcesCommand.cxx
index 53e25b5d3f..cd7ff7419d 100644
--- a/Source/cmTargetSourcesCommand.cxx
+++ b/Source/cmTargetSourcesCommand.cxx
@@ -13,6 +13,7 @@
#include "cmExperimental.h"
#include "cmFileSet.h"
#include "cmGeneratorExpression.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
@@ -320,7 +321,7 @@ bool TargetSourcesImpl::HandleOneFileSet(
fileSet.first->AddDirectoryEntry(
BT<std::string>(baseDirectories, this->Makefile->GetBacktrace()));
if (type == "HEADERS"_s || type == "CXX_MODULE_HEADER_UNITS"_s) {
- for (auto const& dir : cmExpandedList(baseDirectories)) {
+ for (auto const& dir : cmList{ baseDirectories }) {
auto interfaceDirectoriesGenex =
cmStrCat("$<BUILD_INTERFACE:", dir, ">");
if (cmFileSetVisibilityIsForSelf(visibility)) {
diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx
index 5e325dd221..c4a2bc220d 100644
--- a/Source/cmTestGenerator.cxx
+++ b/Source/cmTestGenerator.cxx
@@ -13,6 +13,7 @@
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
@@ -147,16 +148,15 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
}
// Evaluate command line arguments
- std::vector<std::string> argv =
- this->EvaluateCommandLineArguments(this->Test->GetCommand(), ge, config);
-
- // Expand arguments if COMMAND_EXPAND_LISTS is set
- if (this->Test->GetCommandExpandLists()) {
- argv = cmExpandedLists(argv.begin(), argv.end());
- // Expanding lists on an empty command may have left it empty
- if (argv.empty()) {
- argv.emplace_back();
- }
+ cmList argv{
+ this->EvaluateCommandLineArguments(this->Test->GetCommand(), ge, config),
+ // Expand arguments if COMMAND_EXPAND_LISTS is set
+ this->Test->GetCommandExpandLists() ? cmList::ExpandElements::Yes
+ : cmList::ExpandElements::No
+ };
+ // Expanding lists on an empty command may have left it empty
+ if (argv.empty()) {
+ argv.emplace_back();
}
// Check whether the command executable is a target whose name is to
@@ -170,7 +170,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
// Prepend with the emulator when cross compiling if required.
cmValue emulator = target->GetProperty("CROSSCOMPILING_EMULATOR");
if (cmNonempty(emulator)) {
- std::vector<std::string> emulatorWithArgs = cmExpandedList(*emulator);
+ cmList emulatorWithArgs{ *emulator };
std::string emulatorExe(emulatorWithArgs[0]);
cmSystemTools::ConvertToUnixSlashes(emulatorExe);
os << cmOutputConverter::EscapeForCMake(emulatorExe) << " ";
diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx
index b648d9b94f..368155c346 100644
--- a/Source/cmTryRunCommand.cxx
+++ b/Source/cmTryRunCommand.cxx
@@ -15,6 +15,7 @@
#include "cmCoreTryCompile.h"
#include "cmDuration.h"
#include "cmExecutionStatus.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageType.h"
#include "cmRange.h"
@@ -271,7 +272,7 @@ void TryRunCommandImpl::RunExecutable(const std::string& runArgs,
const std::string& emulator =
this->Makefile->GetSafeDefinition("CMAKE_CROSSCOMPILING_EMULATOR");
if (!emulator.empty()) {
- std::vector<std::string> emulatorWithArgs = cmExpandedList(emulator);
+ cmList emulatorWithArgs{ emulator };
finalCommand +=
cmSystemTools::ConvertToRunCommandPath(emulatorWithArgs[0]);
finalCommand += " ";
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 8926f9ed15..6266328c57 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -31,6 +31,7 @@
#include "cmGlobalVisualStudio7Generator.h"
#include "cmGlobalVisualStudioGenerator.h"
#include "cmLinkLineDeviceComputer.h"
+#include "cmList.h"
#include "cmListFileCache.h"
#include "cmLocalGenerator.h"
#include "cmLocalVisualStudio10Generator.h"
@@ -1167,7 +1168,7 @@ void cmVisualStudio10TargetGenerator::WriteImports(Elem& e0)
cmValue imports =
this->GeneratorTarget->Target->GetProperty("VS_PROJECT_IMPORT");
if (imports) {
- std::vector<std::string> argsSplit = cmExpandedList(*imports, false);
+ cmList argsSplit{ *imports };
for (auto& path : argsSplit) {
if (!cmsys::SystemTools::FileIsFullPath(path)) {
path = this->Makefile->GetCurrentSourceDirectory() + "/" + path;
@@ -2113,8 +2114,8 @@ void cmVisualStudio10TargetGenerator::ParseSettingsProperty(
for (const std::string& config : this->Configurations) {
std::string evaluated = cge->Evaluate(this->LocalGenerator, config);
- std::vector<std::string> settings = cmExpandedList(evaluated);
- for (const std::string& setting : settings) {
+ cmList settings{ evaluated };
+ for (const auto& setting : settings) {
const std::string::size_type assignment = setting.find('=');
if (assignment != std::string::npos) {
const std::string propName = setting.substr(0, assignment);
@@ -2714,16 +2715,11 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
if (lang == "ASM_NASM") {
if (cmValue objectDeps = sf.GetProperty("OBJECT_DEPENDS")) {
- std::string dependencies;
- std::vector<std::string> depends = cmExpandedList(*objectDeps);
- const char* sep = "";
- for (std::string& d : depends) {
+ cmList depends{ *objectDeps };
+ for (auto& d : depends) {
ConvertToWindowsSlash(d);
- dependencies += sep;
- dependencies += d;
- sep = ";";
}
- e2.Element("AdditionalDependencies", dependencies);
+ e2.Element("AdditionalDependencies", depends.join(";"));
}
}
diff --git a/Source/cmXCodeScheme.cxx b/Source/cmXCodeScheme.cxx
index e727d22141..7f26fd8b23 100644
--- a/Source/cmXCodeScheme.cxx
+++ b/Source/cmXCodeScheme.cxx
@@ -13,6 +13,7 @@
#include "cmGeneratedFileStream.h"
#include "cmGeneratorExpression.h"
#include "cmGeneratorTarget.h"
+#include "cmList.h"
#include "cmStateTypes.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
@@ -270,7 +271,7 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout,
if (cmValue argList =
this->Target->GetTarget()->GetProperty("XCODE_SCHEME_ARGUMENTS")) {
- std::vector<std::string> arguments = cmExpandedList(*argList);
+ cmList arguments{ *argList };
if (!arguments.empty()) {
xout.StartElement("CommandLineArguments");
@@ -290,7 +291,7 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout,
if (cmValue envList =
this->Target->GetTarget()->GetProperty("XCODE_SCHEME_ENVIRONMENT")) {
- std::vector<std::string> envs = cmExpandedList(*envList);
+ cmList envs{ *envList };
if (!envs.empty()) {
xout.StartElement("EnvironmentVariables");
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 8dee5cc13c..623478e71d 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -53,6 +53,7 @@
# include "cmMakefileProfilingData.h"
#endif
#include "cmJSONState.h"
+#include "cmList.h"
#include "cmMessenger.h"
#include "cmState.h"
#include "cmStateDirectory.h"
@@ -813,7 +814,7 @@ bool cmake::FindPackage(const std::vector<std::string>& args)
}
} else if (mode == "COMPILE"_s) {
std::string includes = mf->GetSafeDefinition("PACKAGE_INCLUDE_DIRS");
- std::vector<std::string> includeDirs = cmExpandedList(includes);
+ cmList includeDirs{ includes };
this->GlobalGenerator->CreateGenerationObjects();
const auto& lg = this->GlobalGenerator->LocalGenerators[0];
@@ -829,7 +830,7 @@ bool cmake::FindPackage(const std::vector<std::string>& args)
tgt->SetProperty("LINKER_LANGUAGE", language);
std::string libs = mf->GetSafeDefinition("PACKAGE_LIBRARIES");
- std::vector<std::string> libList = cmExpandedList(libs);
+ cmList libList{ libs };
for (std::string const& lib : libList) {
tgt->AddLinkLibrary(*mf, lib, GENERAL_LibraryType);
}
@@ -1026,7 +1027,7 @@ void cmake::SetArgs(const std::vector<std::string>& args)
CommandArgument{ "--check-build-system", CommandArgument::Values::Two,
[](std::string const& value, cmake* state) -> bool {
- std::vector<std::string> values = cmExpandedList(value);
+ cmList values{ value };
state->CheckBuildSystemArgument = values[0];
state->ClearBuildSystem = (atoi(values[1].c_str()) > 0);
return true;
@@ -2163,7 +2164,7 @@ struct SaveCacheEntry
int cmake::HandleDeleteCacheVariables(const std::string& var)
{
- std::vector<std::string> argsSplit = cmExpandedList(var, true);
+ cmList argsSplit{ var, cmList::EmptyElements::Yes };
// erase the property to avoid infinite recursion
this->State->SetGlobalProperty("__CMAKE_DELETE_CACHE_CHANGE_VARS_", "");
if (this->GetIsInTryCompile()) {
diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx
index f4e602bf02..ad27443596 100644
--- a/Source/cmakemain.cxx
+++ b/Source/cmakemain.cxx
@@ -26,6 +26,7 @@
#include "cmConsoleBuf.h"
#include "cmDocumentationEntry.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmMakefile.h"
#include "cmMessageMetadata.h"
#include "cmState.h"
@@ -457,7 +458,7 @@ int do_build(int ac, char const* const* av)
};
auto targetLambda = [&](std::string const& value) -> bool {
if (!value.empty()) {
- std::vector<std::string> values = cmExpandedList(value);
+ cmList values{ value };
for (auto const& v : values) {
targets.emplace_back(v);
if (v == "clean") {
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index a2a9e09cfc..036ddc6a60 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -14,6 +14,7 @@
#include "cmConsoleBuf.h"
#include "cmDuration.h"
#include "cmGlobalGenerator.h"
+#include "cmList.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmQtAutoMocUic.h"
@@ -342,7 +343,7 @@ int HandleIWYU(const std::string& runCmd, const std::string& /* sourceFile */,
{
// Construct the iwyu command line by taking what was given
// and adding all the arguments we give to the compiler.
- std::vector<std::string> iwyu_cmd = cmExpandedList(runCmd, true);
+ cmList iwyu_cmd{ runCmd, cmList::EmptyElements::Yes };
cm::append(iwyu_cmd, orig_cmd.begin() + 1, orig_cmd.end());
// Run the iwyu command line. Capture its stderr and hide its stdout.
// Ignore its return code because the tool always returns non-zero.
@@ -366,7 +367,7 @@ int HandleIWYU(const std::string& runCmd, const std::string& /* sourceFile */,
int HandleTidy(const std::string& runCmd, const std::string& sourceFile,
const std::vector<std::string>& orig_cmd)
{
- std::vector<std::string> tidy_cmd = cmExpandedList(runCmd, true);
+ cmList tidy_cmd{ runCmd, cmList::EmptyElements::Yes };
tidy_cmd.push_back(sourceFile);
for (auto const& arg : tidy_cmd) {
@@ -416,7 +417,7 @@ int HandleLWYU(const std::string& runCmd, const std::string& sourceFile,
{
// Construct the ldd -r -u (link what you use lwyu) command line
// ldd -u -r lwuy target
- std::vector<std::string> lwyu_cmd = cmExpandedList(runCmd, true);
+ cmList lwyu_cmd{ runCmd, cmList::EmptyElements::Yes };
lwyu_cmd.push_back(sourceFile);
// Run the lwyu check command line, currently ldd is expected.
@@ -444,7 +445,7 @@ int HandleCppLint(const std::string& runCmd, const std::string& sourceFile,
const std::vector<std::string>&)
{
// Construct the cpplint command line.
- std::vector<std::string> cpplint_cmd = cmExpandedList(runCmd, true);
+ cmList cpplint_cmd{ runCmd, cmList::EmptyElements::Yes };
cpplint_cmd.push_back(sourceFile);
// Run the cpplint command line. Capture its output.
@@ -471,7 +472,7 @@ int HandleCppCheck(const std::string& runCmd, const std::string& sourceFile,
const std::vector<std::string>& orig_cmd)
{
// Construct the cpplint command line.
- std::vector<std::string> cppcheck_cmd = cmExpandedList(runCmd, true);
+ cmList cppcheck_cmd{ runCmd, cmList::EmptyElements::Yes };
// extract all the -D, -U, and -I options from the compile line
for (auto const& opt : orig_cmd) {
if (opt.size() > 2) {
diff --git a/Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx b/Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx
index 65f17b6e32..2824fbfe31 100644
--- a/Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx
+++ b/Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx
@@ -19,6 +19,7 @@
#include "cmCTestTestHandler.h"
#include "cmFileLock.h"
#include "cmFileLockResult.h"
+#include "cmList.h"
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
@@ -282,7 +283,7 @@ static int doVerify(int argc, char const* const* argv)
if (argc == 5) {
testNames = argv[4];
}
- auto testNameList = cmExpandedList(testNames, false);
+ cmList testNameList{ testNames };
std::set<std::string> testNameSet(testNameList.begin(), testNameList.end());
cmCTestResourceSpec spec;