[CMake] How to use FindPackageHandleStandardArgs

Marcel Loose loose at astron.nl
Fri May 15 06:28:34 EDT 2009


Hi all,

On second thought, I think the interface of
find_package_handle_standard_args() is a bit counter-intuitive. Why
should it matter to the (ignorant) user that list-variables are treated
different from "ordinary" values. That doesn't make sense IMHO.

I've taken the time to rewrite find_package_handle_standard_args() in
such a way that you can now supply any variable as argument to be
checked. If the argument is a list, each member in the list will be
tested. It makes the function even shorter, because there's no need to
do a separate test on _VAR1 anymore. I think this change won't break any
existing code. Any comments are appreciated.

I've attached the new function. Or would it be better to post a patch
file? Or should I open an issue for this and upload the file there?
Anyway, here it is. 

Best regards,
Marcel Loose.

On Thu, 2009-05-14 at 14:10 +0200, Marcel Loose wrote:
> Hi Denis,
> 
> I think I understand what's going wrong.
> I collect the *values* from the variables returned by find_library() in
> XXX_LIBRARIES, not the names of these variables.
> 
> So, instead of passing LIB1 LIB2 LIB3 to
> find_package_handle_standard_args() I'm actually passing ${LIB1} ${LIB2}
> ${LIB3}, which is, of course, quite different.
> 
> What's the best way to proceed. Should I collect the names of variables
> used in the find_library() calls in a separate list variable and use
> that for find_package_handle_standard_args(), or should I just handle
> the REQUIRED and QUIET stuff myself in this case. Any recommendations?
> 
> Best regards,
> Marcel Loose.
> 
> On Thu, 2009-05-14 at 04:45 -0700, Denis Scherbakov wrote:
> > 
> > > Yes, that's right. But...
> > > 
> > > The number of libraries I need to find depends on the
> > > COMPONENTS that
> > > were specified by the user in his CMakeLists.txt file. So I
> > > cannot hard
> > > code these variables as arguments to
> > > find_package_handle_standard_args(). That's why I chose to
> > > collect them
> > > in XXX-LIBRARIES first and pass that variable.
> > > 
> > > So, I'm still stuck I'm afraid.
> > 
> > You may pass a LIST of variables, this also works.
> > 
> > INCLUDE(FindPackageHandleStandardArgs)
> > 
> > LIST(APPEND myList "GSL_LIBRARIES" "GSL_LIBRARY" "GSL_CBLAS_LIBRARY" "GSL_INCLUDE_DIR")
> > 
> > FIND_PACKAGE_HANDLE_STANDARD_ARGS(GSL DEFAULT_MSG ${myList})
> > 
> > Denis
> > 
> > 
> >       
> 
> _______________________________________________
> 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

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: FindPackageHandleStandardArgs.cmake
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090515/80671fba/attachment.asc>


More information about the CMake mailing list