summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmLocalGenerator.cxx23
1 files changed, 14 insertions, 9 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 10b855d..2200102 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1712,25 +1712,30 @@ void cmLocalGenerator
impexe))
{
// This is a CMake target. Ask the target for its real name.
- // Pass the full path to the target file but purposely leave
- // off the per-configuration subdirectory. The link directory
- // ordering knows how to deal with this.
- std::string linkItem = tgt->GetDirectory(0, implib);
- linkItem += "/";
- linkItem += tgt->GetFullName(config, implib);
+ std::string linkItem;
if(impexe && loader_flag)
{
// This link item is an executable that may provide symbols
// used by this target. A special flag is needed on this
// platform. Add it now.
- linkItem = loader_flag +
- this->Convert(linkItem.c_str(), NONE, SHELL, false);
+ std::string exe = tgt->GetFullPath(config, implib);
+ linkItem += loader_flag;
+ linkItem += this->Convert(exe.c_str(), NONE, SHELL, false);
+ }
+ else
+ {
+ // Pass the full path to the target file but purposely leave
+ // off the per-configuration subdirectory. The link directory
+ // ordering knows how to deal with this.
+ linkItem += tgt->GetDirectory(0, implib);
+ linkItem += "/";
+ linkItem += tgt->GetFullName(config, implib);
}
linkLibraries.push_back(linkItem);
// For full path, use the true location.
if(fullPathLibs)
{
- fullPathLibs->push_back(tgt->GetFullPath(config));
+ fullPathLibs->push_back(tgt->GetFullPath(config, implib));
}
}
else