Xcode: Fix missing Frameworks search paths

Fixes: #24541
This commit is contained in:
Marc Chevrier
2023-03-05 14:36:43 +01:00
committed by Brad King
parent 20e3884e9e
commit ce1bdec3a4
3 changed files with 35 additions and 16 deletions

View File

@@ -1563,7 +1563,7 @@ void cmComputeLinkInformation::AddTargetItem(LinkEntry const& entry)
this->OldLinkDirItems.push_back(item.Value);
}
if (target->IsFrameworkOnApple() && !this->GlobalGenerator->IsXcode()) {
if (target->IsFrameworkOnApple()) {
// Add the framework directory and the framework item itself
auto fwDescriptor = this->GlobalGenerator->SplitFrameworkPath(
item.Value, cmGlobalGenerator::FrameworkFormat::Extended);
@@ -1579,26 +1579,32 @@ void cmComputeLinkInformation::AddTargetItem(LinkEntry const& entry)
// Add the directory portion to the framework search path.
this->AddFrameworkPath(fwDescriptor->Directory);
}
if (cmHasSuffix(entry.Feature, "FRAMEWORK"_s)) {
this->Items.emplace_back(fwDescriptor->GetLinkName(), ItemIsPath::Yes,
target,
this->FindLibraryFeature(entry.Feature));
} else {
if (this->GlobalGenerator->IsXcode()) {
this->Items.emplace_back(
item, ItemIsPath::Yes, target,
this->FindLibraryFeature(
entry.Feature == DEFAULT ? "__CMAKE_LINK_LIBRARY" : entry.Feature));
this->FindLibraryFeature(entry.Feature == DEFAULT
? "__CMAKE_LINK_FRAMEWORK"
: entry.Feature));
} else {
if (cmHasSuffix(entry.Feature, "FRAMEWORK"_s)) {
this->Items.emplace_back(fwDescriptor->GetLinkName(), ItemIsPath::Yes,
target,
this->FindLibraryFeature(entry.Feature));
} else {
this->Items.emplace_back(
item, ItemIsPath::Yes, target,
this->FindLibraryFeature(entry.Feature == DEFAULT
? "__CMAKE_LINK_LIBRARY"
: entry.Feature));
}
}
} else {
// Now add the full path to the library.
this->Items.emplace_back(
item, ItemIsPath::Yes, target,
this->FindLibraryFeature(
entry.Feature == DEFAULT
? (target->IsFrameworkOnApple() && this->GlobalGenerator->IsXcode()
? "__CMAKE_LINK_FRAMEWORK"
: "__CMAKE_LINK_LIBRARY")
: entry.Feature));
entry.Feature == DEFAULT ? "__CMAKE_LINK_LIBRARY" : entry.Feature));
}
}

View File

@@ -22,10 +22,14 @@ set_target_properties(Gui2 PROPERTIES
)
add_executable(app2 main2.c)
set_target_properties(Gui2 PROPERTIES
PUBLIC_HEADER "${input_header}"
FRAMEWORK TRUE
set_target_properties(app2 PROPERTIES
RUNTIME_OUTPUT_DIRECTORY bin
)
target_link_libraries(app2 PRIVATE Gui2)
# Same test with STATIC consumer
add_library(Consumer STATIC consumer.c)
target_link_libraries(Consumer PRIVATE Gui2)

View File

@@ -0,0 +1,9 @@
#include <Gui2/Gui.h>
int consumer()
{
foo();
return 0;
}