[CMake] CMAKE_LIBRARY_PATH appears not to work properly for finding libtcl

Luigi Calori l.calori at cineca.it
Mon May 17 08:06:15 EDT 2010


Bill Hoffman wrote:
> OK, your right, it does prefer names that show up first in the name 
> list even if they are later in the total path.
I think I have got the same problem (bug) as had FindFreetype always
getting system lib even if I a custom version was present in a folder
lib under a path specified in
CMAKE_PREFIX_PATH as the system lib was called freetype while the custom
one was called freetype238 and the module was (erroneously??) setting

NAMES freetype libfreetype freetype219 freetype238

I solved switching to

NAMES freetype238 freetype219 freetype libfreetype

It would be good to have it fixed....

Thanks

>
> Here is what the code does:
>
> The ivar this->SearchPaths is the super path in the this function:
>
> std::string cmFindProgramCommand::FindProgram(std::vector<std::string> 
> names)
> {
>   std::string program = "";
>
>   if(this->SearchAppBundleFirst || this->SearchAppBundleOnly)
>     {
>     program = FindAppBundle(names);
>     }
> // this is the main search, it passes in a list of names,
> // and the super path
>   if(program.empty() && !this->SearchAppBundleOnly)
>     {
>     program = cmSystemTools::FindProgram(names, this->SearchPaths, true);
>     }
>
>   if(program.empty() && this->SearchAppBundleLast)
>     {
>     program = this->FindAppBundle(names);
>     }
>   return program;
> }
>
>
> // FindProgram loops over the names and trys to each
> // name in the total path
> //
> kwsys_stl::string SystemTools::FindProgram(
>   const kwsys_stl::vector<kwsys_stl::string>& names,
>   const kwsys_stl::vector<kwsys_stl::string>& path,
>   bool noSystemPath)
> {
>   for(kwsys_stl::vector<kwsys_stl::string>::const_iterator it = 
> names.begin();
>       it != names.end() ; ++it)
>     {
>     // Try to find the program.
>     kwsys_stl::string result = SystemTools::FindProgram(it->c_str(),
>                                                   path,
>                                                   noSystemPath);
>     if ( !result.empty() )
>       {
>       return result;
>       }
>     }
>   return "";
>
>
> Not supper easy to fix...   FindProgram is actually a pretty 
> complicated function.  But, if someone wants to test/send a patch... :)
>
> Might break something, but I doubt it.  If you have two copies of 
> something on a machine, you are bound to make someone unhappy some of 
> the time by picking the wrong one...
>
> -Bill
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
>




More information about the CMake mailing list