summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx33
1 files changed, 29 insertions, 4 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index e0fc622..b71e53f 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -358,10 +358,35 @@ void cmLocalGenerator::GenerateInstallRules()
}
break;
case cmTarget::EXECUTABLE:
- fname = exeOutPath;
- fname += l->second.GetFullName(m_Makefile);
- files = fname.c_str();
- this->AddInstallRule(fout, dest, type, files);
+ if(l->second.GetPropertyAsBool("MACOSX_BUNDLE"))
+ {
+ fname = exeOutPath;
+ fname += l->second.GetFullName(m_Makefile);
+ std::string plist = fname;
+ plist += ".app/Contents/Info.plist";
+ fname += ".app/Contents/MacOS/";
+ fname += l->second.GetName();
+ files = fname.c_str();
+ std::string bdest = dest;
+ bdest += "/";
+ bdest += l->second.GetName();
+ std::string pdest = bdest;
+ pdest += ".app/Contents";
+ bdest += ".app/Contents/MacOS";
+ // first install the actual executable
+ this->AddInstallRule(fout, bdest.c_str(), type, files);
+ files = plist.c_str();
+ // now install the Info.plist file
+ this->AddInstallRule(fout, pdest.c_str(),
+ cmTarget::INSTALL_FILES, files);
+ }
+ else
+ {
+ fname = exeOutPath;
+ fname += l->second.GetFullName(m_Makefile);
+ files = fname.c_str();
+ this->AddInstallRule(fout, dest, type, files);
+ }
break;
case cmTarget::INSTALL_FILES:
{