[CMake] Path vs. name preference during search.

Jakub Zakrzewski jzakrzewski at e2e.ch
Fri Feb 14 03:02:24 EST 2014


Hi,
what about searching multiple times, each time giving only the path you want (in order of prefference)? If I'm correct, once the library is found, next attempts to find it againg will be a no-op.

--
Gruesse,
Jakub


From: CMake [mailto:cmake-bounces at cmake.org] On Behalf Of Rob McDonald
Sent: Donnerstag, 13. Februar 2014 19:21
To: Jean-Christophe Fillion-Robin
Cc: CMake ML
Subject: Re: [CMake] Path vs. name preference during search.

Jc,

That is an approach I have thought about.  I even think I have looked at Slicer for how you work your CMake system.

I prefer to use project-supplied FindLIB.cmake (or a slightly modified version thereof) because some of them do more than just setting LIBRARY, INCLUDE_DIR, and FOUND variables.

Rather than duplicate everything done in the FindLIB.cmake script (which can have platform-dependent logic), I have gone the path of encouraging the FindLIB.cmake to find the one I want.

Rob


On Thu, Feb 13, 2014 at 10:09 AM, Jean-Christophe Fillion-Robin <jchris.fillionr at kitware.com<mailto:jchris.fillionr at kitware.com>> wrote:
Hi Rob,
Do address the use case you described, I usually explicitly set the path the library when built as an external project and rely only on the find_* command for the use_system case.

See https://github.com/Slicer/Slicer/blob/c5a39acf7af28ba82cc0097c84d1ebda89cce3b4/SuperBuild/External_teem.cmake#L13-16
Hth
Jc

On Thu, Feb 13, 2014 at 12:51 PM, Rob McDonald <rob.a.mcdonald at gmail.com<mailto:rob.a.mcdonald at gmail.com>> wrote:
When I search for a given library, specifying multiple possible names and multiple hints for paths...

FIND_LIBRARY( FINDME_LIB
        NAMES name1 name2 name3
        HINTS path1 path2 path3
        DOC "Library to find")

CMake seems to have a preference for name1, and it first searches all HINTS for name1.  If it doesn't find name1, it moves to name2 and then searches all HINTS for name2, etc.

I would prefer to have a preference for path1, no matter the name.  Try for all names in path1, then move to path2, etc.

Is there a way to toggle this behavior?

Rob


Background...  Basically, I am using ExternalProject_Add to build a library.  However, to make it possible to use the system-library instead, this is optional.  I use a FindThelib.cmake so the main project works seamlessly either way.

I'm targeting the case where a version of this library is installed on the system, but I want to use my own copy.

The name of the library depends on build options and platform, so controlling on the name is a little fragile.  However, I have explicitly built it in a known directory, so having preference for the known directory is desirable.

--

Powered by www.kitware.com<http://www.kitware.com>

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake



--
+1 919 869 8849<tel:%2B1%20919%20869%208849>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20140214/65458e41/attachment.html>


More information about the CMake mailing list