diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index ed1af6473..c2b055849 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -2092,6 +2092,12 @@ void cmGlobalXCodeGenerator } } + // Skip link information for static libraries. + if(cmtarget->GetType() == cmTarget::STATIC_LIBRARY) + { + return; + } + // Loop over configuration types and set per-configuration info. for(std::vector::iterator i = this->CurrentConfigurationTypes.begin(); @@ -2166,29 +2172,28 @@ void cmGlobalXCodeGenerator } // now add the link libraries - if(cmtarget->GetType() != cmTarget::STATIC_LIBRARY) + { + std::string linkLibs; + const char* sep = ""; + typedef cmComputeLinkInformation::ItemVector ItemVector; + ItemVector const& libNames = cli.GetItems(); + for(ItemVector::const_iterator li = libNames.begin(); + li != libNames.end(); ++li) { - std::string linkLibs; - const char* sep = ""; - typedef cmComputeLinkInformation::ItemVector ItemVector; - ItemVector const& libNames = cli.GetItems(); - for(ItemVector::const_iterator li = libNames.begin(); - li != libNames.end(); ++li) + linkLibs += sep; + sep = " "; + if(li->IsPath) { - linkLibs += sep; - sep = " "; - if(li->IsPath) - { - linkLibs += this->XCodeEscapePath(li->Value.c_str()); - } - else - { - linkLibs += li->Value; - } + linkLibs += this->XCodeEscapePath(li->Value.c_str()); + } + else + { + linkLibs += li->Value; } - this->AppendBuildSettingAttribute(target, "OTHER_LDFLAGS", - linkLibs.c_str(), configName); } + this->AppendBuildSettingAttribute(target, "OTHER_LDFLAGS", + linkLibs.c_str(), configName); + } } } diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 8e96fd6d9..d0e2fcbfb 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -720,7 +720,11 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules // Collect up flags to link in needed libraries. cmOStringStream linklibs; - this->LocalGenerator->OutputLinkLibraries(linklibs, *this->Target, relink); + if(this->Target->GetType() != cmTarget::STATIC_LIBRARY) + { + this->LocalGenerator + ->OutputLinkLibraries(linklibs, *this->Target, relink); + } // Construct object file lists that may be needed to expand the // rule. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index a9c5b535c..ace3d6f04 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -3299,6 +3299,9 @@ cmTargetLinkInterface* cmTarget::ComputeLinkInterface(const char* config) cmComputeLinkInformation* cmTarget::GetLinkInformation(const char* config) { + // Link information does not make sense for static libraries. + assert(this->GetType() != cmTarget::STATIC_LIBRARY); + // Lookup any existing information for this configuration. std::map::iterator i = this->LinkInformation.find(config?config:"");