Pārlūkot izejas kodu

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

Andy Cedilnik 22 gadi atpakaļ
vecāks
revīzija
c3840b5cc3

+ 1 - 1
Source/cmLinkLibrariesCommand.cxx

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

+ 5 - 4
Source/cmLocalUnixMakefileGenerator.cxx

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

+ 1 - 1
Source/cmTarget.cxx

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

+ 2 - 2
Source/cmTargetLinkLibrariesCommand.cxx

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