On 19. Apr, 2010, at 22:07 , Benoit Thomas wrote:

> Hello,
> 
> I'm using an external library which is already compiled. I have wrapped the 
> library in a MyLib.cmake and use it in cmake as an imported library. It works 
> fine, but since the include line uses relative path, it changes from projects 
> to projects and in some case it looks just wrong.
> 
> I want to change this to something more like:
> 
> find_package (MyLib)
> include (MYLIB_CMAKE_FILE)
> # add_executable and stuff
> target_link_libraries (MyExe MyLib)
> 
> However, I'm not sure if I should create a FindMyLib.cmake file or 
> MyLib-config.cmake. Both seems to eventually do the same, but I don't really 
> understand what are the differences.
> 
> When I looked at some Find*.cmake file (FindSWIG for example) it has a 
> UseSWIG.cmake file. Syntax looks like what I'm trying to achieve, but the 
> none of the Use* files I've check create imported libray, so I guess this is 
> not the way to go.
> 
> In the book, there is an example which seems to do more what I want and use 
> *-config.cmake, which give something like
> 
> find_package (MyLib)
> # no include, since the MyLib-config.cmake already took care of the include
> # add_executable and stuff
> target_link_libraries (MyExe MyLib)
> 
> Part of what I don't understand is when a user use the find_package command, 
> is he expecting to load a Find* file or a *-config file (or he doesn't 
> care?), and is he expecting a specific behavior from each file, etc, etc... 
> And would it be a surprise for the user if the find_package(MyLib) add a 
> MyLib target into his project ? And is using find_package appropriate for 
> this kind of situation and I got it all wrong :) ?
> 
> Bottom line, I'm looking for a way to write my projects so that if someone 
> else with cmake experience look into them, it will feel like "common" cmake 
> project (if such thing exists) and not something I'm the only one to 
> understand...
> 
> (Sorry if this sound confusing)
> Ben.

Well, FindXXX.cmake modules are for non-native CMake software (i.e. not 
compiled and installed by CMake) and XXX-config.cmake modules are for 
CMake-based projects. So, if you are developing a software using CMake, you 
should create a XXX-config.cmake module for it which you install along with the 
binaries and other development files.

The UseXXX.cmake files are usually just convenience files containing additional 
macros/functions and set up some variables or add include_directories.


HTH

Michael

_______________________________________________
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

Reply via email to