[CMake] for loop won't locate libs

eial at cs.bgu.ac.il eial at cs.bgu.ac.il
Thu Jun 4 13:58:30 EDT 2009


On Thu 04 Jun 20:31 2009 Bill Hoffman wrote:
> eial at cs.bgu.ac.il wrote:
> > On Thu 04 Jun 20:16 2009 Tyler Roscoe wrote:
> >> On Thu, Jun 04, 2009 at 07:50:08PM +0300, eial at cs.bgu.ac.il wrote:
> >>> SET(LIBS AR ARMulti ARvideo)
> >>> FOREACH (LIB ${LIBS})
> >>>    SET(FOUND_LIB)
> >>>    FIND_LIBRARY(LIB_FOUND ${LIB} /usr/lib /usr/local/lib) 
> >>>    SET(ARTK_LIBRARY ${ARTK_LIBRARY} ${LIB_FOUND})
> >>> ENDFOREACH(LIB)
> >>>
> >>> the result is /usr/lib64/libAR.a/usr/lib64/libAR.a/usr/lib64/libAR.a when it should be /usr/lib64/libAR.a /usr/lib64/libARMulti.a /usr/lib64/libARvideo.a
> >> What's up with set(FOUND_LIB)?
> >>
> >> You might be running into a quoting/list expansion problem. Try:
> >> SET(ARTK_LIBRARY "${ARTK_LIBRARY}" "${LIB_FOUND}")
> >>
> >> or use list(APPEND ...) instead.
> >>
> >> tyler
> >>
> > 
> > apparently, FOUND_LIB isn't being cleaned in each loop, that is for cleaning.
> > my problem is that the loop finds only the first lib's file but not the rest, look at the output result that I've posted.
> > 
> 
> Look at the docs for FIND_LIBRARY:
> http://www.cmake.org/cmake/help/cmake2.6docs.html#command:find_library
> 
> 
> "A cache entry named by <VAR> is created to store the result of this 
> command. If the library is found the result is stored in the variable 
> and the search will not be repeated unless the variable is cleared. If 
> nothing is found, the result will be <VAR>-NOTFOUND, and the search will 
> be attempted again the next time find_library is invoked with the same 
> variable."
> 
> -Bill
> 
${FOUND_LIB-NOTFOUND} is empty in every iteration





More information about the CMake mailing list