mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 21:59:54 -06:00
Xcode: ensure framework with custom output directory can be consumed
Fixes: #24046
This commit is contained in:
@@ -3830,6 +3830,7 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
||||
const auto& fwPaths = cli->GetFrameworkPaths();
|
||||
emitted.insert(fwPaths.begin(), fwPaths.end());
|
||||
BuildObjectListOrString libPaths(this, true);
|
||||
BuildObjectListOrString fwSearchPaths(this, true);
|
||||
for (auto const& libItem : configItemMap[configName]) {
|
||||
auto const& libName = *libItem;
|
||||
if (libName.IsPath == cmComputeLinkInformation::ItemIsPath::Yes) {
|
||||
@@ -3846,8 +3847,8 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
||||
emitted.insert(fwDescriptor->Directory).second) {
|
||||
// This is a search path we had not added before and it isn't
|
||||
// an implicit search path, so we need it
|
||||
libPaths.Add("-F " +
|
||||
this->XCodeEscapePath(fwDescriptor->Directory));
|
||||
fwSearchPaths.Add(
|
||||
this->XCodeEscapePath(fwDescriptor->Directory));
|
||||
}
|
||||
if (libName.GetFeatureName() == "__CMAKE_LINK_FRAMEWORK"_s) {
|
||||
// use the full path
|
||||
@@ -3886,9 +3887,16 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
||||
target->AddDependTarget(configName, libName.Target->GetName());
|
||||
}
|
||||
}
|
||||
this->AppendBuildSettingAttribute(target,
|
||||
this->GetTargetLinkFlagsVar(gt),
|
||||
libPaths.CreateList(), configName);
|
||||
if (!libPaths.IsEmpty()) {
|
||||
this->AppendBuildSettingAttribute(target,
|
||||
this->GetTargetLinkFlagsVar(gt),
|
||||
libPaths.CreateList(), configName);
|
||||
}
|
||||
if (!fwSearchPaths.IsEmpty()) {
|
||||
this->AppendBuildSettingAttribute(target, "FRAMEWORK_SEARCH_PATHS",
|
||||
fwSearchPaths.CreateList(),
|
||||
configName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,3 +13,21 @@ set_target_properties(Gui PROPERTIES
|
||||
add_executable(app main.c)
|
||||
|
||||
target_link_libraries(app PRIVATE Gui)
|
||||
|
||||
|
||||
# Same test but with generation done in custom directories
|
||||
add_library(Gui2 SHARED Gui.c "${input_header}")
|
||||
set_target_properties(Gui2 PROPERTIES
|
||||
PUBLIC_HEADER "${input_header}"
|
||||
FRAMEWORK TRUE
|
||||
LIBRARY_OUTPUT_DIRECTORY lib
|
||||
)
|
||||
|
||||
add_executable(app2 main2.c)
|
||||
set_target_properties(Gui2 PROPERTIES
|
||||
PUBLIC_HEADER "${input_header}"
|
||||
FRAMEWORK TRUE
|
||||
RUNTIME_OUTPUT_DIRECTORY bin
|
||||
)
|
||||
|
||||
target_link_libraries(app2 PRIVATE Gui2)
|
||||
|
||||
9
Tests/RunCMake/Framework/main2.c
Normal file
9
Tests/RunCMake/Framework/main2.c
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
#include <Gui2/Gui.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
foo();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user