mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-03 14:20:27 +00:00
cmComputeLinkInformation: prepare Item consumers for OBJECT libraries
After b665966933 (cmComputeLinkInformation: track `OBJECT` library
dependencies, 2023-07-22), introduced in !8645 as a fix for #25112,
`OBJECT` libraries were tracked in a separate member to reduce the risk
of further regressions. This commit prepares consumers to handle
`OBJECT` libraries once they start appearing as link items.
This commit is contained in:
@@ -536,7 +536,7 @@ static void getCompatibleInterfaceProperties(
|
||||
const cmComputeLinkInformation::ItemVector& deps = info->GetItems();
|
||||
|
||||
for (auto const& dep : deps) {
|
||||
if (!dep.Target) {
|
||||
if (!dep.Target || dep.Target->GetType() == cmStateEnums::OBJECT_LIBRARY) {
|
||||
continue;
|
||||
}
|
||||
getPropertyContents(dep.Target, "COMPATIBLE_INTERFACE_BOOL",
|
||||
|
||||
@@ -5858,7 +5858,7 @@ void cmGeneratorTarget::CheckPropertyCompatibility(
|
||||
static const std::string strNumMax = "COMPATIBLE_INTERFACE_NUMBER_MAX";
|
||||
|
||||
for (auto const& dep : deps) {
|
||||
if (!dep.Target) {
|
||||
if (!dep.Target || dep.Target->GetType() == cmStateEnums::OBJECT_LIBRARY) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -3598,6 +3598,13 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
||||
continue;
|
||||
}
|
||||
for (auto const& libItem : cli->GetItems()) {
|
||||
// Explicitly ignore OBJECT libraries as Xcode emulates them as static
|
||||
// libraries without an artifact. Avoid exposing this to the rest of
|
||||
// CMake's compilation model.
|
||||
if (libItem.Target &&
|
||||
libItem.Target->GetType() == cmStateEnums::OBJECT_LIBRARY) {
|
||||
continue;
|
||||
}
|
||||
// We want to put only static libraries, dynamic libraries, frameworks
|
||||
// and bundles that are built from targets that are not imported in "Link
|
||||
// Binary With Libraries" build phase. Except if the target property
|
||||
|
||||
@@ -65,7 +65,8 @@ void cmLinkLineComputer::ComputeLinkLibs(
|
||||
ItemVector const& items = cli.GetItems();
|
||||
for (auto const& item : items) {
|
||||
if (item.Target &&
|
||||
item.Target->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
|
||||
(item.Target->GetType() == cmStateEnums::INTERFACE_LIBRARY ||
|
||||
item.Target->GetType() == cmStateEnums::OBJECT_LIBRARY)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@ void cmLinkLineDeviceComputer::ComputeLinkLibraries(
|
||||
switch (item.Target->GetType()) {
|
||||
case cmStateEnums::SHARED_LIBRARY:
|
||||
case cmStateEnums::MODULE_LIBRARY:
|
||||
case cmStateEnums::OBJECT_LIBRARY:
|
||||
case cmStateEnums::INTERFACE_LIBRARY:
|
||||
skip = true;
|
||||
break;
|
||||
|
||||
@@ -1318,7 +1318,8 @@ void cmLocalVisualStudio7GeneratorInternals::OutputLibraries(
|
||||
fout << (lib.HasFeature() ? lib.GetFormattedItem(rel).Value : rel)
|
||||
<< " ";
|
||||
} else if (!lib.Target ||
|
||||
lib.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
|
||||
(lib.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY &&
|
||||
lib.Target->GetType() != cmStateEnums::OBJECT_LIBRARY)) {
|
||||
fout << lib.Value.Value << " ";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4603,7 +4603,8 @@ void cmVisualStudio10TargetGenerator::AddLibraries(
|
||||
: path);
|
||||
}
|
||||
} else if (!l.Target ||
|
||||
l.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
|
||||
(l.Target->GetType() != cmStateEnums::INTERFACE_LIBRARY &&
|
||||
l.Target->GetType() != cmStateEnums::OBJECT_LIBRARY)) {
|
||||
libVec.push_back(l.Value.Value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user