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