BUG: Fix Bug #445 - Same library in multiple projects can cause problems

This commit is contained in:
Andy Cedilnik 2003-12-18 13:04:28 -05:00
parent 31bb398dc3
commit c3840b5cc3
4 changed files with 9 additions and 8 deletions

View File

@ -50,7 +50,7 @@ bool cmLinkLibrariesCommand::InitialPass(std::vector<std::string> const& args)
{ {
std::string libPath = *i + "_CMAKE_PATH"; std::string libPath = *i + "_CMAKE_PATH";
const char* dir = m_Makefile->GetDefinition(libPath.c_str()); const char* dir = m_Makefile->GetDefinition(libPath.c_str());
if( dir ) if( dir && *dir )
{ {
m_Makefile->AddLinkDirectory( dir ); m_Makefile->AddLinkDirectory( dir );
} }

View File

@ -1575,9 +1575,10 @@ void cmLocalUnixMakefileGenerator::OutputDependLibs(std::ostream& fout)
// if cache and not the current directory add a rule, to // if cache and not the current directory add a rule, to
// jump into the directory and build for the first time // jump into the directory and build for the first time
if(cacheValue && if(cacheValue && *cacheValue &&
(!this->SamePath(m_Makefile->GetCurrentOutputDirectory(), cacheValue))) (!this->SamePath(m_Makefile->GetCurrentOutputDirectory(), cacheValue)))
{ {
std::cout << "Cache Value: " << cacheValue << std::endl;
// add the correct extension // add the correct extension
std::string ltname = *lib+"_LIBRARY_TYPE"; std::string ltname = *lib+"_LIBRARY_TYPE";
const char* libType const char* libType
@ -1726,7 +1727,7 @@ void cmLocalUnixMakefileGenerator::OutputLibDepend(std::ostream& fout,
std::string libPath = name; std::string libPath = name;
libPath += "_CMAKE_PATH"; libPath += "_CMAKE_PATH";
const char* cacheValue = m_Makefile->GetDefinition(libPath.c_str()); const char* cacheValue = m_Makefile->GetDefinition(libPath.c_str());
if(cacheValue ) if( cacheValue && *cacheValue )
{ {
// if there is a cache value, then this is a library that cmake // if there is a cache value, then this is a library that cmake
// knows how to build, so we can depend on it // knows how to build, so we can depend on it
@ -1783,7 +1784,7 @@ void cmLocalUnixMakefileGenerator::OutputExeDepend(std::ostream& fout,
std::string exePath = name; std::string exePath = name;
exePath += "_CMAKE_PATH"; exePath += "_CMAKE_PATH";
const char* cacheValue = m_Makefile->GetDefinition(exePath.c_str()); const char* cacheValue = m_Makefile->GetDefinition(exePath.c_str());
if(cacheValue ) if( cacheValue && *cacheValue )
{ {
// if there is a cache value, then this is a executable/utility that cmake // if there is a cache value, then this is a executable/utility that cmake
// knows how to build, so we can depend on it // knows how to build, so we can depend on it
@ -2168,7 +2169,7 @@ void cmLocalUnixMakefileGenerator::OutputCustomRules(std::ostream& fout)
// watch for target dependencies, // watch for target dependencies,
std::string libPath = dep + "_CMAKE_PATH"; std::string libPath = dep + "_CMAKE_PATH";
const char* cacheValue = m_Makefile->GetDefinition(libPath.c_str()); const char* cacheValue = m_Makefile->GetDefinition(libPath.c_str());
if (cacheValue) if ( cacheValue && *cacheValue )
{ {
libPath = cacheValue; libPath = cacheValue;
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH") && if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH") &&

View File

@ -165,7 +165,7 @@ void cmTarget::TraceVSDependencies(std::string projFile,
// watch for target dependencies, // watch for target dependencies,
std::string libPath = dep + "_CMAKE_PATH"; std::string libPath = dep + "_CMAKE_PATH";
const char* cacheValue = makefile->GetDefinition(libPath.c_str()); const char* cacheValue = makefile->GetDefinition(libPath.c_str());
if (cacheValue) if (cacheValue && *cacheValue)
{ {
// add the depend as a utility on the target // add the depend as a utility on the target
this->AddUtility(dep.c_str()); this->AddUtility(dep.c_str());

View File

@ -64,7 +64,7 @@ bool cmTargetLinkLibrariesCommand::InitialPass(std::vector<std::string> const& a
std::string libPath = *i + "_CMAKE_PATH"; std::string libPath = *i + "_CMAKE_PATH";
const char* dir = m_Makefile->GetDefinition(libPath.c_str()); const char* dir = m_Makefile->GetDefinition(libPath.c_str());
if( dir ) if( dir && *dir )
{ {
m_Makefile->AddLinkDirectoryForTarget(args[0].c_str(), dir ); m_Makefile->AddLinkDirectoryForTarget(args[0].c_str(), dir );
} }
@ -91,7 +91,7 @@ void cmTargetLinkLibrariesCommand::FinalPass()
{ {
libPath = m_HasLocation[cc] + "_CMAKE_PATH"; libPath = m_HasLocation[cc] + "_CMAKE_PATH";
const char* dir = m_Makefile->GetDefinition(libPath.c_str()); const char* dir = m_Makefile->GetDefinition(libPath.c_str());
if ( dir ) if ( dir && *dir )
{ {
std::string str = "Library " + m_HasLocation[cc] + std::string str = "Library " + m_HasLocation[cc] +
" is defined using ADD_LIBRARY after the library is used " " is defined using ADD_LIBRARY after the library is used "