BUG: Fixed OSX bundles to be built in the directory specified by cmTarget::GetDirectory(). This is an incremental step for bug#2240.
This commit is contained in:
parent
475447870f
commit
5ed8ea8a0e
|
@ -121,27 +121,22 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
if(this->Target->GetPropertyAsBool("MACOSX_BUNDLE"))
|
if(this->Target->GetPropertyAsBool("MACOSX_BUNDLE"))
|
||||||
{
|
{
|
||||||
|
// Compute bundle directory names.
|
||||||
|
std::string macdir = outpath;
|
||||||
|
macdir += targetName;
|
||||||
|
macdir += ".app/Contents/";
|
||||||
|
outpath = macdir;
|
||||||
|
outpath += "MacOS";
|
||||||
|
cmSystemTools::MakeDirectory(outpath.c_str());
|
||||||
|
outpath += "/";
|
||||||
|
|
||||||
// Make bundle directories
|
// Make bundle directories
|
||||||
outpath += targetName;
|
|
||||||
outpath += ".app/Contents/MacOS/";
|
|
||||||
std::string f1 =
|
std::string f1 =
|
||||||
this->Makefile->GetModulesFile("MacOSXBundleInfo.plist.in");
|
this->Makefile->GetModulesFile("MacOSXBundleInfo.plist.in");
|
||||||
if ( f1.size() == 0 )
|
if ( f1.size() == 0 )
|
||||||
{
|
{
|
||||||
cmSystemTools::Error("could not find Mac OSX bundle template file.");
|
cmSystemTools::Error("could not find Mac OSX bundle template file.");
|
||||||
}
|
}
|
||||||
std::string macdir =
|
|
||||||
this->Makefile->GetSafeDefinition("EXECUTABLE_OUTPUT_PATH");
|
|
||||||
if ( macdir.size() == 0 )
|
|
||||||
{
|
|
||||||
macdir = this->Makefile->GetCurrentOutputDirectory();
|
|
||||||
}
|
|
||||||
if(macdir.size() && macdir[macdir.size()-1] != '/')
|
|
||||||
{
|
|
||||||
macdir += "/";
|
|
||||||
}
|
|
||||||
macdir += targetName;
|
|
||||||
macdir += ".app/Contents/";
|
|
||||||
|
|
||||||
std::vector<cmSourceFile*>::iterator sourceIt;
|
std::vector<cmSourceFile*>::iterator sourceIt;
|
||||||
for ( sourceIt = this->Target->GetSourceFiles().begin();
|
for ( sourceIt = this->Target->GetSourceFiles().begin();
|
||||||
|
@ -166,8 +161,6 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
||||||
// Configure the Info.plist file. Note that it needs the executable name
|
// Configure the Info.plist file. Note that it needs the executable name
|
||||||
// to be set.
|
// to be set.
|
||||||
std::string f2 = macdir + "Info.plist";
|
std::string f2 = macdir + "Info.plist";
|
||||||
macdir += "MacOS";
|
|
||||||
cmSystemTools::MakeDirectory(macdir.c_str());
|
|
||||||
this->Makefile->AddDefinition("MACOSX_BUNDLE_EXECUTABLE_NAME",
|
this->Makefile->AddDefinition("MACOSX_BUNDLE_EXECUTABLE_NAME",
|
||||||
targetName.c_str());
|
targetName.c_str());
|
||||||
this->Makefile->ConfigureFile(f1.c_str(), f2.c_str(),
|
this->Makefile->ConfigureFile(f1.c_str(), f2.c_str(),
|
||||||
|
|
Loading…
Reference in New Issue