mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-23 23:49:02 -06:00
cmOrderDirectories: Modernize memory management
This commit is contained in:
@@ -8,9 +8,9 @@
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
|
||||
#include <cm/memory>
|
||||
#include <cmext/algorithm>
|
||||
|
||||
#include "cmAlgorithms.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmMessageType.h"
|
||||
@@ -250,11 +250,7 @@ cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg,
|
||||
this->Computed = false;
|
||||
}
|
||||
|
||||
cmOrderDirectories::~cmOrderDirectories()
|
||||
{
|
||||
cmDeleteAll(this->ConstraintEntries);
|
||||
cmDeleteAll(this->ImplicitDirEntries);
|
||||
}
|
||||
cmOrderDirectories::~cmOrderDirectories() = default;
|
||||
|
||||
std::vector<std::string> const& cmOrderDirectories::GetOrderedDirectories()
|
||||
{
|
||||
@@ -288,14 +284,16 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
|
||||
|
||||
if (this->IsImplicitDirectory(dir)) {
|
||||
this->ImplicitDirEntries.push_back(
|
||||
new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
|
||||
cm::make_unique<cmOrderDirectoriesConstraintSOName>(this, fullPath,
|
||||
soname));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Construct the runtime information entry for this library.
|
||||
this->ConstraintEntries.push_back(
|
||||
new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
|
||||
cm::make_unique<cmOrderDirectoriesConstraintSOName>(this, fullPath,
|
||||
soname));
|
||||
} else {
|
||||
// This can happen if the same library is linked multiple times.
|
||||
// In that case the runtime information check need be done only
|
||||
@@ -316,14 +314,15 @@ void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath)
|
||||
std::string dir = cmSystemTools::GetFilenamePath(fullPath);
|
||||
if (this->IsImplicitDirectory(dir)) {
|
||||
this->ImplicitDirEntries.push_back(
|
||||
new cmOrderDirectoriesConstraintLibrary(this, fullPath));
|
||||
cm::make_unique<cmOrderDirectoriesConstraintLibrary>(this,
|
||||
fullPath));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Construct the link library entry.
|
||||
this->ConstraintEntries.push_back(
|
||||
new cmOrderDirectoriesConstraintLibrary(this, fullPath));
|
||||
cm::make_unique<cmOrderDirectoriesConstraintLibrary>(this, fullPath));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -371,7 +370,7 @@ void cmOrderDirectories::CollectOriginalDirectories()
|
||||
this->AddOriginalDirectories(this->UserDirectories);
|
||||
|
||||
// Add directories containing constraints.
|
||||
for (cmOrderDirectoriesConstraint* entry : this->ConstraintEntries) {
|
||||
for (const auto& entry : this->ConstraintEntries) {
|
||||
entry->AddDirectory();
|
||||
}
|
||||
|
||||
@@ -456,7 +455,7 @@ void cmOrderDirectories::FindImplicitConflicts()
|
||||
// Check for items in implicit link directories that have conflicts
|
||||
// in the explicit directories.
|
||||
std::ostringstream conflicts;
|
||||
for (cmOrderDirectoriesConstraint* entry : this->ImplicitDirEntries) {
|
||||
for (const auto& entry : this->ImplicitDirEntries) {
|
||||
entry->FindImplicitConflicts(conflicts);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "cmConfigure.h" // IWYU pragma: keep
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
@@ -46,8 +47,9 @@ private:
|
||||
|
||||
std::vector<std::string> OrderedDirectories;
|
||||
|
||||
std::vector<cmOrderDirectoriesConstraint*> ConstraintEntries;
|
||||
std::vector<cmOrderDirectoriesConstraint*> ImplicitDirEntries;
|
||||
std::vector<std::unique_ptr<cmOrderDirectoriesConstraint>> ConstraintEntries;
|
||||
std::vector<std::unique_ptr<cmOrderDirectoriesConstraint>>
|
||||
ImplicitDirEntries;
|
||||
std::vector<std::string> UserDirectories;
|
||||
std::vector<std::string> LanguageDirectories;
|
||||
cmsys::RegularExpression RemoveLibraryExtension;
|
||||
|
||||
Reference in New Issue
Block a user