mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-12 00:58:59 -05:00
Merge branch 'xcode-extra-sources' into release-3.14
Merge-request: !3208
This commit is contained in:
@@ -1142,6 +1142,13 @@ bool cmGlobalXCodeGenerator::CreateXCodeTarget(
|
||||
// Add CMakeLists.txt file for user convenience.
|
||||
this->AddXCodeProjBuildRule(gtgt, classes);
|
||||
|
||||
// Add the Info.plist we are about to generate for an App Bundle.
|
||||
if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) {
|
||||
std::string plist = this->ComputeInfoPListLocation(gtgt);
|
||||
cmSourceFile* sf = gtgt->Makefile->GetOrCreateSource(plist, true);
|
||||
classes.push_back(sf);
|
||||
}
|
||||
|
||||
std::sort(classes.begin(), classes.end(), cmSourceFilePathCompare());
|
||||
|
||||
gtgt->ComputeObjectMapping();
|
||||
@@ -2875,13 +2882,13 @@ bool cmGlobalXCodeGenerator::CreateGroups(
|
||||
continue;
|
||||
}
|
||||
|
||||
// add the soon to be generated Info.plist file as a source for a
|
||||
// MACOSX_BUNDLE file
|
||||
if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) {
|
||||
std::string plist = this->ComputeInfoPListLocation(gtgt);
|
||||
mf->GetOrCreateSource(plist, true);
|
||||
gtgt->AddSource(plist);
|
||||
}
|
||||
auto addSourceToGroup = [this, mf, gtgt,
|
||||
&sourceGroups](std::string const& source) {
|
||||
cmSourceGroup* sourceGroup = mf->FindSourceGroup(source, sourceGroups);
|
||||
cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup);
|
||||
std::string key = GetGroupMapKeyFromPath(gtgt, source);
|
||||
this->GroupMap[key] = pbxgroup;
|
||||
};
|
||||
|
||||
// Put cmSourceFile instances in proper groups:
|
||||
for (auto const& si : gtgt->GetAllConfigSources()) {
|
||||
@@ -2890,12 +2897,7 @@ bool cmGlobalXCodeGenerator::CreateGroups(
|
||||
// Object library files go on the link line instead.
|
||||
continue;
|
||||
}
|
||||
// Add the file to the list of sources.
|
||||
std::string const& source = sf->GetFullPath();
|
||||
cmSourceGroup* sourceGroup = mf->FindSourceGroup(source, sourceGroups);
|
||||
cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup);
|
||||
std::string key = GetGroupMapKeyFromPath(gtgt, source);
|
||||
this->GroupMap[key] = pbxgroup;
|
||||
addSourceToGroup(sf->GetFullPath());
|
||||
}
|
||||
|
||||
// Add CMakeLists.txt file for user convenience.
|
||||
@@ -2904,11 +2906,14 @@ bool cmGlobalXCodeGenerator::CreateGroups(
|
||||
gtgt->GetLocalGenerator()->GetCurrentSourceDirectory();
|
||||
listfile += "/CMakeLists.txt";
|
||||
cmSourceFile* sf = gtgt->Makefile->GetOrCreateSource(listfile);
|
||||
std::string const& source = sf->GetFullPath();
|
||||
cmSourceGroup* sourceGroup = mf->FindSourceGroup(source, sourceGroups);
|
||||
cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup);
|
||||
std::string key = GetGroupMapKeyFromPath(gtgt, source);
|
||||
this->GroupMap[key] = pbxgroup;
|
||||
addSourceToGroup(sf->GetFullPath());
|
||||
}
|
||||
|
||||
// Add the Info.plist we are about to generate for an App Bundle.
|
||||
if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) {
|
||||
std::string plist = this->ComputeInfoPListLocation(gtgt);
|
||||
cmSourceFile* sf = gtgt->Makefile->GetOrCreateSource(plist, true);
|
||||
addSourceToGroup(sf->GetFullPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
project(BundleSubDir)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/randomResourceFile.plist"
|
||||
COMMAND /bin/cp
|
||||
@@ -34,3 +36,8 @@ install(TARGETS SecondBundle DESTINATION Applications)
|
||||
# bundle does not respect the name. Also the executable will not be found by
|
||||
# the test driver if this does not work.
|
||||
set_target_properties(SecondBundle PROPERTIES OUTPUT_NAME SecondBundleExe)
|
||||
|
||||
# Express one app bundle in terms of another's SOURCES to verify that
|
||||
# the generators do not expose the Info.plist of one to the other.
|
||||
add_executable(SubdirBundle1 MACOSX_BUNDLE EXCLUDE_FROM_ALL ../BundleTest.cxx)
|
||||
add_executable(SubdirBundle2 MACOSX_BUNDLE EXCLUDE_FROM_ALL $<TARGET_PROPERTY:SubdirBundle1,SOURCES>)
|
||||
|
||||
Reference in New Issue
Block a user