summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-03-03 23:06:44 (GMT)
committerBrad King <brad.king@kitware.com>2006-03-03 23:06:44 (GMT)
commit5792dc8da8a567ece9fd231e9844a5b1cd30ddc2 (patch)
treee3f5d634888beff05975c9515081af316616a3d2 /Source
parentce51e361fe4d53ba775636849880350898467002 (diff)
downloadCMake-5792dc8da8a567ece9fd231e9844a5b1cd30ddc2.zip
CMake-5792dc8da8a567ece9fd231e9844a5b1cd30ddc2.tar.gz
CMake-5792dc8da8a567ece9fd231e9844a5b1cd30ddc2.tar.bz2
ENH: Replaced UpdateLocation method with call to GetLocation. Added comment about problems with the LOCATION attribute.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmTarget.cxx54
-rw-r--r--Source/cmTarget.h3
2 files changed, 10 insertions, 47 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index a562f25..39cdbae 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -859,56 +859,22 @@ const char* cmTarget::GetLocation(const char* config)
return m_Location.c_str();
}
-void cmTarget::UpdateLocation()
-{
- // make sure we have a makefile
- if (!m_Makefile)
- {
- return;
- }
-
- // set the LOCATION property of the target
- std::string target_location;
- switch( this->GetType() )
- {
- case cmTarget::STATIC_LIBRARY:
- case cmTarget::MODULE_LIBRARY:
- case cmTarget::SHARED_LIBRARY:
- target_location =
- m_Makefile->GetSafeDefinition("LIBRARY_OUTPUT_PATH");
- break;
- case cmTarget::EXECUTABLE:
- target_location =
- m_Makefile->GetSafeDefinition("EXECUTABLE_OUTPUT_PATH");
- break;
- default:
- return;
- }
- if ( target_location.size() == 0 )
- {
- target_location += m_Makefile->GetStartOutputDirectory();
- }
- if ( target_location.size() > 0 )
- {
- target_location += "/";
- }
- const char* cfgid = m_Makefile->GetDefinition("CMAKE_CFG_INTDIR");
- if ( cfgid && strcmp(cfgid, ".") != 0 )
- {
- target_location += cfgid;
- target_location += "/";
- }
- target_location += this->GetFullName();
- this->SetProperty("LOCATION",target_location.c_str());
-}
-
const char *cmTarget::GetProperty(const char* prop)
{
// watch for special "computed" properties that are dependent on other
// properties or variables, always recompute them
if (!strcmp(prop,"LOCATION"))
{
- this->UpdateLocation();
+ // Set the LOCATION property of the target. Note that this cannot take
+ // into account the per-configuration name of the target because the
+ // configuration type may not be known at CMake time. We should
+ // deprecate this feature and instead support transforming an executable
+ // target name given as the command part of custom commands into the
+ // proper path at build time. Alternatively we could put environment
+ // variable settings in all custom commands that hold the name of the
+ // target for each configuration and then give a reference to the
+ // variable in the location.
+ this->SetProperty("LOCATION", this->GetLocation(0));
}
// the type property returns what type the target is
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 9990cdd..d22df65 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -306,9 +306,6 @@ private:
TargetType type,
const char* config);
- // update the value of the LOCATION var
- void UpdateLocation();
-
// Use a makefile variable to set a default for the given property.
// If the variable is not defined use the given default instead.
void SetPropertyDefault(const char* property, const char* default_value);