kdelibs compile error

Ralf Habacker ralf.habacker at freenet.de
Thu Aug 7 11:14:36 CEST 2008


Alexander Neundorf schrieb:
> On Wednesday 06 August 2008, Ralf Habacker wrote:
>   
>> Ralf Habacker schrieb:
>>     
> ...
>   
>>> Thanks patrick patch cmake 2.6.1 could not be build with nmake.
>>> Then I added in cmComputeLinkDepends.cxx
>>>
>>> void cmComputeLinkDepends::AddVarLinkEntries(int depender_index,
>>> ...
>>>   // Look for entries meant for this configuration.
>>>   std::vector<std::string> actual_libs;
>>>   cmTarget::LinkLibraryType llt = cmTarget::GENERAL;
>>>   bool haveLLT = false;
>>>   for(std::vector<std::string>::const_iterator di = deplist.begin();
>>>       di != deplist.end(); ++di)
>>>     {
>>> +    std::cerr << "+++" << *di << "\n";
>>>
>>> ...
>>>    }
>>> and after the closing tag of the loop
>>>
>>>     for(std::vector<std::string>::const_iterator di =
>>> actual_libs.begin(); di != actual_libs.end(); ++di)
>>>       std::cerr << "+-+" << *di;
>>>
>>>
>>>
>>> Then I run
>>>
>>> nmake rebuild_cache
>>>
>>> in kdelibs-build dir but I saw no debug prints neither on the command
>>> line nor the CMakeFiles/CMakeOutput.log nor  CMakeFiles/CMakeError.log
>>>       
>> Additional note: I added a std::cerr immediatly after main and is was
>> printed when running nmake rebuild_cache. This indicates that nmake
>> rebuild_cache does not regenerate the dependencies, so  how to trigger
>> this ?
>>     
>
> One would have to check when AddVarLinkEntries() is actually called.
>   
AddVarLinkEntries wasn't called when cmak'ing kdelibs
> Or just use the brute force method and add debug output also in 
> cmTarget::GatherDependencies() and cmTargetLinkLibrariesCommand::IntialPass() 
> (I don't think that this one causes the problem).
>   
In cmLocalGenerator.cxx:1544 ff
  // Append the link items.
  typedef cmComputeLinkInformation::ItemVector ItemVector;
  ItemVector const& items = cli.GetItems();
  for(ItemVector::const_iterator li = items.begin(); li != items.end(); 
++li)
    {
+    if (li->Value == "optimized.lib" || li->Value == "debug.lib") {
+       std::cerr << "found invalid library "  << li->Value;
+  }

the optimized.lib and debug.lib are in the items ItemVector and the 
questions is why are there in the list and not filtered by the build 
type . I haven't found the place where this  happens.

Some notes:

1 - Using RelWithDebInfo results into the same problem.


Ralf



More information about the Kde-windows mailing list