On 06/17/2010 11:29 AM, Carlos Lopez Gonzalez wrote: > Hi, > I'm new to cmake and want to port a C++ project which is now built using > autotools to cmake build system. > The project has some libraries (we call them modules) which are used in two > applications. The applications uses lt_dladdsearchdir to add the path where > to search the modules and then uses the lt_dlopenext and lt_dlsym to register > the modules. > When using cmake, do I need to use ltdl as well or will cmake replace the way > the libraries are found and registered?
If your project's libraries are actually to be loaded dynamically at the behest of the applications, i.e. "dlopened", you further need a library to achieve this as it is a runtime affair and, thus, beyond CMake's scope, so stay with libltdl or switch to the simpler libdl, e.g., if you want to get rid of the libtool stuff. In either case, you should build dlopened libraries with ADD_LIBRARY(...MODULE...) in order to prevent other binaries to link against them explicitly. If your libraries don't need to be dlopened - your question somewhat seems to be targeted on this - you should build them as ordinary shared libraries with ADD_LIBRARY(...SHARED...) and link other binaries against them with TARGET_LINK_LIBRARIES(), so the runtime linker automatically takes care to load them when the applications are launched. To ensure they are found after being installed at a perhaps unusual location, look at CMake's RPATH support, e.g.: <http://www.cmake.org/Wiki/CMake_RPATH_handling> 'hope that helps. Regards, 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
