BUG: Sweeping changes to cleanup computation of target names. This should

fix many bugs related to target names being computed inconsistently.

- Centralized computation of a target's file name to a method in
  cmTarget.  Now that global knowledge is always available the
  *_CMAKE_PATH cache variables are no longer needed.

- Centralized computation of link library command lines and link
  directory search order.

- Moved computation of link directories needed to link CMake targets
  to be after evaluation of linking dependencies.

This also removed alot of duplicate code in which each version had its
own bugs.

This commit is surrounded by the tags

  CMake-TargetNameCentralization1-pre

and

  CMake-TargetNameCentralization1-post

so make the large set of changes easy to identify.
This commit is contained in:
Brad King
2006-01-13 18:18:32 -05:00
parent 2622956159
commit 22c62c9e65
28 changed files with 1233 additions and 1103 deletions

View File

@@ -18,6 +18,7 @@ public:
PBXAggregateTarget,XCBuildConfiguration,XCConfigurationList,
None
};
class StringVec: public std::vector<cmStdString> {};
static const char* PBXTypeNames[];
virtual ~cmXCodeObject();
cmXCodeObject(PBXType ptype, Type type);
@@ -110,11 +111,16 @@ public:
}
void CopyAttributes(cmXCodeObject* );
void AddDependLibrary(const char* l)
void AddDependLibrary(const char* configName,
const char* l)
{
m_DependLibraries.push_back(l);
if(!configName)
{
configName = "";
}
m_DependLibraries[configName].push_back(l);
}
std::vector<cmStdString> const& GetDependLibraries()
std::map<cmStdString, StringVec> const& GetDependLibraries()
{
return m_DependLibraries;
}
@@ -131,7 +137,7 @@ protected:
cmXCodeObject* m_Object;
cmXCodeObject* m_PBXTargetDependency;
std::vector<cmXCodeObject*> m_List;
std::vector<cmStdString> m_DependLibraries;
std::map<cmStdString, StringVec> m_DependLibraries;
std::map<cmStdString, cmXCodeObject*> m_ObjectAttributes;
};
#endif