summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2011-07-18 19:25:30 (GMT)
committerDavid Cole <david.cole@kitware.com>2011-07-18 20:37:06 (GMT)
commit0c030ef72c30d9c8634d0d815b15d9f238b7b267 (patch)
tree71cfc05669982beeaff769b42e721a5ff821c7ff /Source
parentfefaaa09d92b5a2a58f44f433c096db5ec6668ed (diff)
downloadCMake-0c030ef72c30d9c8634d0d815b15d9f238b7b267.zip
CMake-0c030ef72c30d9c8634d0d815b15d9f238b7b267.tar.gz
CMake-0c030ef72c30d9c8634d0d815b15d9f238b7b267.tar.bz2
Add use of EFFECTIVE_PLATFORM_NAME to generated Xcode projects.
Facilitates building iOS projects, enabling switching back and forth between simulator and device builds at development time.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx19
-rw-r--r--Source/cmTarget.cxx14
-rw-r--r--Source/cmTarget.h6
3 files changed, 30 insertions, 9 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 2cbd3ed..76dd770 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -1480,7 +1480,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
BuildObjectListOrString ppDefs(this, this->XcodeVersion >= 30);
if(this->XcodeVersion > 15)
{
- this->AppendDefines(ppDefs, "CMAKE_INTDIR=\"$(CONFIGURATION)\"");
+ this->AppendDefines(ppDefs,
+ "CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"");
}
if(const char* exportMacro = target.GetExportMacro())
{
@@ -1597,9 +1598,12 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
{
if(this->XcodeVersion >= 21)
{
- std::string pncdir = target.GetDirectory(configName);
- buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
- this->CreateString(pncdir.c_str()));
+ if(!target.UsesDefaultOutputDir(configName, false))
+ {
+ std::string pncdir = target.GetDirectory(configName);
+ buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
+ this->CreateString(pncdir.c_str()));
+ }
}
else
{
@@ -2399,10 +2403,10 @@ void cmGlobalXCodeGenerator
{
if(this->XcodeVersion > 15)
{
- // now add the same one but append $(CONFIGURATION) to it:
+ // now add the same one but append $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it:
linkDirs += " ";
linkDirs += this->XCodeEscapePath(
- (*libDir + "/$(CONFIGURATION)").c_str());
+ (*libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)").c_str());
}
linkDirs += " ";
linkDirs += this->XCodeEscapePath(libDir->c_str());
@@ -3173,7 +3177,8 @@ cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout,
//----------------------------------------------------------------------------
const char* cmGlobalXCodeGenerator::GetCMakeCFGInitDirectory()
{
- return this->XcodeVersion >= 21? "$(CONFIGURATION)" : ".";
+ return this->XcodeVersion >= 21 ?
+ "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" : ".";
}
//----------------------------------------------------------------------------
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 52b9072..2cb3c01 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -3688,9 +3688,11 @@ const char* cmTarget::GetOutputTargetType(bool implib)
}
//----------------------------------------------------------------------------
-void cmTarget::ComputeOutputDir(const char* config,
+bool cmTarget::ComputeOutputDir(const char* config,
bool implib, std::string& out)
{
+ bool usesDefaultOutputDir = false;
+
// Look for a target property defining the target output directory
// based on the target type.
std::string targetTypeName = this->GetOutputTargetType(implib);
@@ -3742,6 +3744,7 @@ void cmTarget::ComputeOutputDir(const char* config,
if(out.empty())
{
// Default to the current output directory.
+ usesDefaultOutputDir = true;
out = ".";
}
@@ -3757,6 +3760,15 @@ void cmTarget::ComputeOutputDir(const char* config,
this->Makefile->GetLocalGenerator()->GetGlobalGenerator()->
AppendDirectoryForConfig("/", config, "", out);
}
+
+ return usesDefaultOutputDir;
+}
+
+//----------------------------------------------------------------------------
+bool cmTarget::UsesDefaultOutputDir(const char* config, bool implib)
+{
+ std::string dir;
+ return this->ComputeOutputDir(config, implib, dir);
}
//----------------------------------------------------------------------------
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 3b1f016..28652e2 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -446,6 +446,10 @@ public:
/** Get a build-tree directory in which to place target support files. */
std::string GetSupportDirectory() const;
+ /** Return whether this target uses the default value for its output
+ directory. */
+ bool UsesDefaultOutputDir(const char* config, bool implib);
+
private:
/**
* A list of direct dependencies. Use in conjunction with DependencyMap.
@@ -558,7 +562,7 @@ private:
// Cache target output paths for each configuration.
struct OutputInfo;
OutputInfo const* GetOutputInfo(const char* config);
- void ComputeOutputDir(const char* config, bool implib, std::string& out);
+ bool ComputeOutputDir(const char* config, bool implib, std::string& out);
// Cache import information from properties for each configuration.
struct ImportInfo;