[CMake] Loop expansion in find_library() seems backwards

Michael Hertling mhertling at online.de
Wed Sep 8 08:56:57 EDT 2010


On 09/08/2010 08:38 AM, Michael Wild wrote:
> 
> On 8. Sep, 2010, at 8:25 , Philip Lowman wrote:
> 
>> Let's say I have many different potential names for a library and the
>> following filesystem
>>
>> /usr/lib/libnspr4.so
>> ${CMAKE_CURRENT_SOURCE_DIR}/libnspr4a.so
>>
>> find_library(TEST_LIBRARY
>>   NAMES nspr4 nspr4a
>>   HINTS ${CMAKE_CURRENT_SOURCE_DIR}
>> )
>>
>> I'm somewhat surprised that the following code finds /usr/lib/libnspr4.so
>> instead of the alternate name for it (libnspr4a.so).  This tells me that the
>> loop is backwards.  Shouldn't the find_library() command be iterating the
>> list of library names across each directory.  For example, the above should
>> search:
>>
>> First ${CMAKE_CURRENT_SOURCE_DIR}...
>>  ${CMAKE_CURRENT_SOURCE_DIR}/libnspr4.so
>>  ${CMAKE_CURRENT_SOURCE_DIR}/libnspr4a.so
>> Then the system directories...
>>  (system paths)/lib/libnspr4.so
>>  (system paths)/lib/libnspr4a.so
>> Etc.
>>
>> The system is actually searching
>> ${CMAKE_CURRENT_SOURCE_DIR}/libnspr4.so
>> /usr/lib/libnspr4.so
>> ${CMAKE_CURRENT_SOURCE_DIR}/libnspr4a.so
>> /usr/lib/libnspr4a.so
>>
>> This is with CMake 2.8.2
>>
>> -- 
>> Philip Lowman
> 
> Oh, no! This topic haunts the list [...]

...which shows that 10718 is still alive. ;-)

Hi Philip,

what's your opinion on this topic, in particular

- swapping loops and the required effort, the related risks
  and the expected results,
- find modules with hardcoded magic numbers and the continuous
  need for maintenance,
- globbing or regex support for FIND_{PROGRAM,LIBRARY,PATH,FILE}?

Regards,

Michael


More information about the CMake mailing list