See also the BundleUtilities module. Work in CVS CMake recently has extended the "fixup_bundle" function so that it works on Windows/Linux as well as on a Mac. And what you are looking for is exactly what it does. If executed in an install script, fixup_bundle will analyze a given executable and then copy/fixup any required non-system shared libraries making it easy to depend on third party dlls without adding a bunch of explicit copy steps yourself...
The prime example of its use is still Mac-only, though: grep for CompleteBundle in the ParaView source tree for the canonical example. HTH, David On Fri, Aug 28, 2009 at 4:44 AM, Michael Wild <[email protected]> wrote: > > You could use CMAKE_RUNTIME_OUTPUT_DIRECTORY or the > RUNTIME_OUTPUT_DIRECTORY target property to specify where CMake should put > all the produced runtime stuff (on Windows, AFAIK this is *.exe and *.dll), > so you don't have to copy them around manually. > If the dll's are not built by you, you might want to have a look at the > GetPrerequisites and InstallRequiredSystemLibraries modules. > > Michael > > > On 28. Aug, 2009, at 10:12, Müller Michael wrote: > > Hi Michael, >> >> Thanks for your repsonse but I need the required DLLs to copy them in a >> post-build step. So I need the information which libaries are required for >> executing something. E.g., in your example >> >> add_library(a ${A_SRCS}) >> add_library(b ${B_SRCS}) >> target_link_libraries(b a) >> add_executable(c ${C_SRCS}) >> target_link_libraries(c b) >> >> I`d like to have something like >> GET_TARGET_PROPERTY(LIBS c IMPORTED_LINK_DEPENDENT_LIBRARIES) and then >> LIBS would contain "C:\project\a.dll;C:\project\b.dll". I also tried it with >> IMPORTED_LINK_DEPENDENT_LIBRARIES but that gives me an empty variable. >> >> Hopefully, this made my problem clearer. >> >> Michael >> >> -----Ursprüngliche Nachricht----- >> Von: Michael Wild [mailto:[email protected]] >> Gesendet: Freitag, 28. August 2009 09:30 >> An: Müller Michael >> Cc: [email protected] >> Betreff: Re: [CMake] Get all required shared libs from a target >> >> >> On 28. Aug, 2009, at 8:29, Müller Michael wrote: >> >> Hi guys, >>> >>> is it possible to "investigate" a target for all required shared >>> libs (transitively). That means i dont which libraries where set >>> with TARGET_LINK_LIBRARIES and somewhere in my CMakeLists.txt i want >>> to find it out again. >>> >>> Thank you >>> Michael >>> >> >> >> Hi >> >> You don't need this (for the case you described). CMake remembers for >> you: >> >> >> add_library(a ${A_SRCS}) >> add_library(b ${B_SRCS}) >> target_link_libraries(b a) >> add_executable(c ${C_SRCS}) >> target_link_libraries(c b) >> >> >> As you see in the last line, c is mentioned to link against b. CMake, >> however, remembers that b also links against a, and consequently also >> adds a to the list of libraries to link against. >> >> >> 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 >> > > _______________________________________________ > 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 >
_______________________________________________ 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
