diff options
author | Brad King <brad.king@kitware.com> | 2006-03-03 23:06:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-03-03 23:06:44 (GMT) |
commit | 5792dc8da8a567ece9fd231e9844a5b1cd30ddc2 (patch) | |
tree | e3f5d634888beff05975c9515081af316616a3d2 /Source/cmTarget.cxx | |
parent | ce51e361fe4d53ba775636849880350898467002 (diff) | |
download | CMake-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/cmTarget.cxx')
-rw-r--r-- | Source/cmTarget.cxx | 54 |
1 files changed, 10 insertions, 44 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 |