Honor BUNDLE_EXTENSION also for App Bundles (#16148)

This commit is contained in:
Gregor Jasny 2016-06-19 20:30:00 +02:00
parent 7bfbcc75a3
commit 2b909c08f5
3 changed files with 22 additions and 3 deletions

View File

@ -1350,7 +1350,12 @@ std::string cmGeneratorTarget::GetAppBundleDirectory(const std::string& config,
bool contentOnly) const bool contentOnly) const
{ {
std::string fpath = this->GetFullName(config, false); std::string fpath = this->GetFullName(config, false);
fpath += ".app"; fpath += ".";
const char* ext = this->GetProperty("BUNDLE_EXTENSION");
if (!ext) {
ext = "app";
}
fpath += ext;
if (!this->Makefile->PlatformIsAppleIos()) { if (!this->Makefile->PlatformIsAppleIos()) {
fpath += "/Contents"; fpath += "/Contents";
if (!contentOnly) { if (!contentOnly) {

View File

@ -1878,6 +1878,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
// Handle bundles and normal executables separately. // Handle bundles and normal executables separately.
if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) { if (gtgt->GetPropertyAsBool("MACOSX_BUNDLE")) {
const char* ext = gtgt->GetProperty("BUNDLE_EXTENSION");
if (ext) {
buildSettings->AddAttribute("WRAPPER_EXTENSION",
this->CreateString(ext));
}
std::string plist = this->ComputeInfoPListLocation(gtgt); std::string plist = this->ComputeInfoPListLocation(gtgt);
// Xcode will create the final version of Info.plist at build time, // Xcode will create the final version of Info.plist at build time,
// so let it replace the executable name. This avoids creating // so let it replace the executable name. This avoids creating

View File

@ -142,13 +142,22 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(
if (this->Target->IsAppBundleOnApple()) { if (this->Target->IsAppBundleOnApple()) {
cmMakefile const* mf = this->Target->Target->GetMakefile(); cmMakefile const* mf = this->Target->Target->GetMakefile();
// Get App Bundle Extension
const char* ext = this->Target->GetProperty("BUNDLE_EXTENSION");
if (!ext) {
ext = "app";
}
// Install the whole app bundle directory. // Install the whole app bundle directory.
type = cmInstallType_DIRECTORY; type = cmInstallType_DIRECTORY;
literal_args += " USE_SOURCE_PERMISSIONS"; literal_args += " USE_SOURCE_PERMISSIONS";
from1 += ".app"; from1 += ".";
from1 += ext;
// Tweaks apply to the binary inside the bundle. // Tweaks apply to the binary inside the bundle.
to1 += ".app/"; to1 += ".";
to1 += ext;
to1 += "/";
if (!mf->PlatformIsAppleIos()) { if (!mf->PlatformIsAppleIos()) {
to1 += "Contents/MacOS/"; to1 += "Contents/MacOS/";
} }