[CMake] Copying of 3rd party DLLs in a POST-BUILD step

Julien Malik julien.malik at c-s.fr
Mon Jan 9 10:33:21 EST 2012


Hi,

Did you try FixupBundle from the BundleUtilities module ?

I use it on windows, at install time, to copy all the dll required by an 
executable, just next to the executable.
Very usefull to generate a standalone installer. The good thing is that 
it introspects your executable (via the windows equivalent of ldd), and 
copy all that is needed, and only what is needed.
No need to maintain any list of DLL, they just need to be accessible in 
the PATH at the time FixupBundle is called.

I guess you can plug a call to it in a POST_BUILD step, and that it 
would automatically copy the right flavor (debug/release) of DLL.

Regards,
Julien


Le 09/01/2012 10:05, Michael Stürmer a écrit :
>
> I have found some topics related to my issue on the web, but none so 
> far helped me to fix it:
>
> I use Visual Studio 2010 on Windows 7 64Bit.
>
> During my build, all binaries are collected in one folder, which makes 
> it easier for me to debug the project. But to be able to run the 
> program actually, I have to copy several dlls (like Qt, openCV etc.) 
> into the folder for the program to find them. Putting the libraries in 
> the system path is not an option for me, as I switch between 32- and 
> 64-bit on the same system.
>
> I managed to locate the folder where the dlls are (using some 
> CMake-Variables) and using a custom command like
>
> ADD_CUSTOM_COMMAND( TARGET CopyDlls POST_BUILD
>
>                 COMMAND copy "${DLL_3RD}/*.dll" 
>  "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIGURATION>"
>
>                 COMMENT "copying dlls ..."
>
>                 )
>
> This copies ALL dlls from the ${DLL_3RD} folder to the binary folder, 
> for Qt that would be the relase as well as the debug libraries.
>
> Now my question:
>
> I would like to only copy those dlls I need, i.e. I have to determine 
> somehow if I'm in debug or release mode and select the appropriate 
> libraries by adding "d" for debug versions. For openCV I need 
> "opencv_core231.dll" in release and "opencv_core231d.dll" in debug 
> mode. Does anyone have a solution/workaround/idea for this problem?
>
> Best 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120109/fde4989e/attachment.htm>


More information about the CMake mailing list