diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 335ba0f..d44c01c 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -149,6 +149,7 @@ void cmGeneratorTarget::LookupObjectLibraries()
       if(objLib->GetType() == cmTarget::OBJECT_LIBRARY)
         {
         if(this->Target->GetType() != cmTarget::EXECUTABLE &&
+           this->Target->GetType() != cmTarget::OBJECT_LIBRARY &&
            this->Target->GetType() != cmTarget::STATIC_LIBRARY &&
            this->Target->GetType() != cmTarget::SHARED_LIBRARY &&
            this->Target->GetType() != cmTarget::MODULE_LIBRARY)
@@ -162,6 +163,13 @@ void cmGeneratorTarget::LookupObjectLibraries()
           }
         this->Target->AddUtility(objLib->GetName());
         this->ObjectLibraries.push_back(objLib);
+        for (std::vector<std::string>::const_iterator
+             oi = objLib->GetObjectLibraries().begin();
+             oi != objLib->GetObjectLibraries().end(); ++oi)
+          {
+          this->ObjectLibraries.push_back(
+            this->Makefile->FindTargetToUse(oi->c_str()));
+          }
         }
       else
         {
