summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmFileCommand.cxx29
-rw-r--r--Source/cmInstallGenerator.cxx26
-rw-r--r--Source/cmInstallTargetGenerator.cxx9
3 files changed, 21 insertions, 43 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 188af27..36d309e 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -290,13 +290,6 @@ bool cmFileCommand::HandleInstallCommand(
const char* destdir = cmSystemTools::GetEnv("DESTDIR");
- std::string extra_dir = "";
- if ( build_type )
- {
- extra_dir = build_type;
- std::string btype = cmSystemTools::LowerCase(build_type);
- }
-
std::vector<std::string> files;
int itype = cmTarget::INSTALL_FILES;
@@ -553,14 +546,9 @@ bool cmFileCommand::HandleInstallCommand(
}
// Reconstruct the source file path taking into account the
- // extra directory and possible new file name.
+ // possibly new file name.
cmOStringStream str;
- str << cmSystemTools::GetFilenamePath(ctarget) << "/";
- if ( extra_dir.size() > 0 )
- {
- str << extra_dir << "/";
- }
- str << fname;
+ str << cmSystemTools::GetFilenamePath(ctarget) << "/" << fname;
ctarget = str.str();
}
break;
@@ -597,23 +585,22 @@ bool cmFileCommand::HandleInstallCommand(
}
// Reconstruct the source file path taking into account the
- // extra directory and possible new file name.
+ // possibly new file name.
cmOStringStream str;
- str << cmSystemTools::GetFilenamePath(ctarget) << "/";
- if ( extra_dir.size() > 0 )
- {
- str << extra_dir << "/";
- }
- str << fname;
+ str << cmSystemTools::GetFilenamePath(ctarget) << "/" << fname;
ctarget = str.str();
}
break;
}
+ std::string message;
if ( !cmSystemTools::SameFile(ctarget.c_str(), destfile.c_str()) )
{
if ( cmSystemTools::FileExists(ctarget.c_str()) )
{
+ message = "Installing ";
+ message += destfile.c_str();
+ m_Makefile->DisplayStatus(message.c_str(), -1);
cmSystemTools::RemoveFile(destfile.c_str());
if ( !cmSystemTools::CopyFileAlways(ctarget.c_str(),
destination.c_str()) )
diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx
index fd337ea..a7e1d6f 100644
--- a/Source/cmInstallGenerator.cxx
+++ b/Source/cmInstallGenerator.cxx
@@ -54,19 +54,6 @@ void cmInstallGenerator::AddInstallRule(std::ostream& os,
bool optional /* = false */,
const char* properties /* = 0 */)
{
- // If the file is optional test its existence before installing.
- const char* indent = "";
- if(optional)
- {
- os << "IF(EXISTS \"" << file << "\")\n";
- indent = " ";
- }
-
- // Write a message indicating the file is being installed.
- std::string fname = cmSystemTools::GetFilenameName(file);
- os << indent << "MESSAGE(STATUS \"Installing " << dest
- << "/" << fname.c_str() << "\")\n";
-
// Use the FILE command to install the file.
std::string stype;
switch(type)
@@ -79,17 +66,14 @@ void cmInstallGenerator::AddInstallRule(std::ostream& os,
case cmTarget::INSTALL_FILES:
default: stype = "FILE"; break;
}
- os << indent << "FILE(INSTALL DESTINATION \"" << dest
- << "\" TYPE " << stype.c_str() ;
+ os << "FILE(INSTALL DESTINATION \"" << dest << "\" TYPE " << stype.c_str();
+ if(optional)
+ {
+ os << " OPTIONAL";
+ }
if(properties && *properties)
{
os << " PROPERTIES" << properties;
}
os << " FILES \"" << file << "\")\n";
-
- // If the file is optional close the IF block.
- if(optional)
- {
- os << "ENDIF(EXISTS \"" << file << "\")\n";
- }
}
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index 940939f..243ba63 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -16,6 +16,8 @@
=========================================================================*/
#include "cmInstallTargetGenerator.h"
+#include "cmGlobalGenerator.h"
+#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmTarget.h"
@@ -162,8 +164,13 @@ cmInstallTargetGenerator
this->ConfigurationTypes->begin();
i != this->ConfigurationTypes->end(); ++i)
{
+ // Start with the configuration's subdirectory.
+ fname = "";
+ this->Target->GetMakefile()->GetLocalGenerator()->GetGlobalGenerator()->
+ AppendDirectoryForConfig(i->c_str(), fname);
+
// Set a variable with the target name for this configuration.
- fname = this->Target->GetFullName(i->c_str(), this->ImportLibrary);
+ fname += this->Target->GetFullName(i->c_str(), this->ImportLibrary);
os << "SET(" << this->Target->GetName()
<< (this->ImportLibrary? "_IMPNAME_" : "_NAME_") << *i
<< " \"" << fname << "\")\n";