BUG: fix for bug 2357, do not allow targets to link to directories

This commit is contained in:
Bill Hoffman 2005-11-22 16:08:16 -05:00
parent 9312deb035
commit 76724c23bf
2 changed files with 13 additions and 0 deletions

View File

@ -225,6 +225,7 @@ void cmOrderLinkDirectories::SetLinkInformation(cmTarget& target,
linktype,
const char* targetLibrary)
{
m_TargetName = target.GetName();
// collect the search paths from the target into paths set
const std::vector<std::string>& searchPaths = target.GetLinkDirectories();
std::vector<cmStdString> empty;
@ -279,6 +280,16 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
std::vector<cmStdString> empty;
for(unsigned int i=0; i < m_RawLinkItems.size(); ++i)
{
if(cmSystemTools::FileIsDirectory(m_RawLinkItems[i].c_str()))
{
std::string message = "Warning: Ignoring path found in link libraries for target: ";
message += m_TargetName;
message += ", path is: ";
message += m_RawLinkItems[i];
message += ". Expected a library name or a full path to a library name.";
cmSystemTools::Message(message.c_str());
continue;
}
if(cmSystemTools::FileIsFullPath(m_RawLinkItems[i].c_str()))
{
cmSystemTools::SplitProgramPath(m_RawLinkItems[i].c_str(),

View File

@ -129,6 +129,8 @@ private:
cmStdString m_LinkPrefix;
// set of directories that can not be put in the correct order
std::set<cmStdString> m_ImposibleDirectories;
// Name of target
cmStdString m_TargetName;
// library regular expressions
cmsys::RegularExpression m_RemoveLibraryExtension;
cmsys::RegularExpression m_ExtractBaseLibraryName;